C# Bind DataTable to Existing DataGridView Column Definitions -


i've been struggling nullreferenceexception , hope here able point me in right direction. i'm trying create , populate datatable , show results in datagridview control. basic code follows, , execution stops nullreferenceexception @ point invoke new updateresults_delegate. oddly enough, can trace entries.rows.count before return queryevententries, can @ least show 1) entries not null reference, , 2) datatable contains rows of data. know have doing wrong, don't know what.

private void updateresults(datatable entries) {     datagridview.datasource = entries; }  private void button_click(object sender, eventargs e) {     performquery(); }  private void performquery() {     datetime start = new datetime(datetimepicker1.value.year,                                   datetimepicker1.value.month,                                   datetimepicker1.value.day,                                   0, 0, 0);      datetime stop  = new datetime(datetimepicker2.value.year,                                   datetimepicker2.value.month,                                   datetimepicker2.value.day,                                   0, 0, 0);      datatable entries = queryevententries(start, stop);     updateresults(entries); }  private datatable queryevententries(datetime start, datetime stop) {     datatable entries = new datatable();     entries.columns.addrange(new datacolumn[] {         new datacolumn("event_type", typeof(int32)),         new datacolumn("event_time", typeof(datetime)),         new datacolumn("event_detail", typeof(string))});      using (sqlconnection conn = new sqlconnection(dsn))     {         using (sqldataadapter adapter = new sqldataadapter(             "select event_type, event_time, event_detail event_log " +             "where event_time >= @start , event_time <= @stop",             conn))         {             adapter.selectcommand.parameters.addrange(new object[] {                 new sqlparameter("@start", start),                 new sqlparameter("@stop", stop)});             adapter.fill(entries);         }     }     return entries; } 

update

i'd summarize , provide additional information i've learned discussion here , debugging efforts since posted question.

i refactoring old code retrieved records database, collected records array, , later iterated through array populate datagridview row row. threading implemented compensate , keep ui responsive during unnecessary looping. have since stripped out thread/invoke; occurs on same execution thread (thank you, sam).

i attempting replace slow, unwieldy approach using datatable can fill dataadapter, , assign datagridview through it's datasource property (above code updated).

i've iterated through entries datatable's rows verify table contains expected data before assigning datagridview's datasource.

foreach (datarow row in entries.rows) {     system.diagnostics.trace.writeline(         string.format("{0} {1} {2}", row[0], row[1], row[2])); } 

one of column of datagridview custom datagridviewcolumn stylize event_type value. apologize didn't mention before in original post wasn't aware important problem. have converted column temporarily standard datagridviewtextboxcolumn control , no longer experiencing exception.

the fields in datatable appended list of fields have been pre-specified in design view of datagridview. records' values being populated in these appended fields. when run time attempts render cell null value provided (as value should rendered done couple columns over).

in light of this, re-titling , re-tagging question. still appreciate if others have experienced can instruct me on how go binding datatable existing column definitions of datagridview.

you need ensure each column's datapropertyname property set corresponding name of datacolumn's columnname.

you may need set datagridview's autogeneratecolumns property false.

i found solution here.


Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -