DataTable temp = null;
temp = Fqueryall("2");
DataTable zclbTable = new DataTable();
zclbTable.Columns.Add("name");
zclbTable.Columns.Add("value");
zclbTable.Rows.Add("所有类别", "0");
foreach (DataRow row in temp.Rows)
{
zclbTable.Rows.Add(row["zclbname"].ToString(), row["zclbid"].ToString());
}
this.comboBox1.DataSource = zclbTable;
comboBox1.DisplayMember = "name";
comboBox1.ValueMember = "value";
这段代码中,Fqueryall("2")函数返回的结果是DataTable
你单步调试一下,看看获取的temp数据中是否有空数据,整个方式没错,只可能在“row["zclbname"].ToString(), row["zclbid"].ToString()”出错,即把null转成字符串时出错。
我也遇到过类似问题,我的建议是,不要用DataTable进行绑定,你用List<string>进行绑定,一定没有问题。
意思是说:把DataTable转化成List<string>
要是不懂转的方法,请参见BaiDu
zclbTable.Rows.Add有参数要么是一个Row,要么是一个object[],所以一个改法是用New Row添加。
另外一个方法是zclbTable.Rows.Add(new object[]{row["zclbname"],row["zclbid"]});
foreach (DataRow row in temp.Rows)
{
DataRow dr = zclbTable.NewRow();
dr["name"]=row["zclbname"];
dr["value"]=row["zclbid"];
zclbTable.Rows.Add(dr);
}
还有你调试看下是不是Add “所有类别”的那行代码有错。