c# - How to fill one column using list and other by datatable in datagridview? -


i want display 2 columns 'flowers_date' , 'rate' in datagridview when date changes in datepicker. fetching data flowers_date using list , wants fetch data 'rate' datatable. how can that? possible? ! here snippet of code.

private void datetimepicker1_valuechanged(object sender, eventargs e)     {          string month = datetimepicker1.value.tostring("mm-yyyy");         list<string> dates = new list<string>();          string date1;         cmd.connection = conn;         conn.open();         cmd.commandtext = ("select lilie_date,rate lilie_master lilie_date '%" + month + "%'");         oledbdatareader rd = cmd.executereader();         while (rd.read())         {              date1 = rd["lilie_date"].tostring();             if (dates.contains(date1))             {                 continue;             }             else             {                 dates.add(date1);              }         }          conn.close();          datatable dt = listtodatatable(dates);         datagridview1.datasource = dt;         datagridview1.refresh();      }      private static datatable listtodatatable(list<string> list)     {          datatable table = new datatable();         // datetime dtime;          table.columns.add("lilie_date");         table.columns.add("rate");          table.columns["lilie_date"].readonly = true;          int columns = 0;         foreach (var array in list)         {             if (array.length > columns)             {                 columns = array.length;             }         }         foreach (var array in list)         {             table.rows.add(array);         }         return table;     } 

firstly, should create strongly-type class store lilie_date , rate properties. makes code more readable , clean.

public class dateratepair {      public string date { get; set; }      public string rate { get; set; } } 

then code should modified below (able fetch both of 2 properties):

private void datetimepicker1_valuechanged(object sender, eventargs e) {      string month = datetimepicker1.value.tostring("mm-yyyy");     // list<string> dates = new list<string>();     list<dateratepair> lstpairs = new list<dateratepair>();     string date1;     cmd.connection = conn;     conn.open();     cmd.commandtext = ("select lilie_date,rate lilie_master lilie_date '%" + month + "%'");     oledbdatareader rd = cmd.executereader();     while (rd.read())     {          date1 = rd["lilie_date"].tostring();         if (dates.contains(date1))         {             continue;         }         else         {             // dates.add(date1);             dateratepair apair = new dateratepair();             apair.date = date1;             apair.rate = rd["rate"].tostring();             lstpairs.add(apair);          }     }      conn.close();      datatable dt = listtodatatable(lstpairs);     datagridview1.datasource = dt;     datagridview1.refresh();  }  private static datatable listtodatatable(list<dateratepair> list) {      datatable table = new datatable();     // datetime dtime;      table.columns.add("lilie_date");     table.columns.add("rate");      table.columns["lilie_date"].readonly = true;      int columns = 0;     foreach (var array in list)     {         if (array.length > columns)         {             columns = array.length;         }     }     foreach (var array in list)     {         datarow dr = table.newrow();         dr["lilie_date"] = array.date;         dr["rate"] = array.rate;         table.rows.add(dr);     }     return table; } 

response if problems arises.


Comments