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
Post a Comment