如何以编程方式将行添加到C#中的DataGridTable?当用户选择一个选项时,我想用新数据重新填充DataGridTable,我将获取该数据,如下所示:
connect.Open();
MySqlCommand comm = connect.CreateCommand();
comm.CommandText = getCustomerInvoices + customerID + "\'";
MySqlDataReader r = comm.ExecuteReader();
while (r.Read())
{
DataGridViewRow d = new DataGridViewRow();
String[] parameters = new String[5];
parameters[0] = r.GetValue(0).ToString();
parameters[1] = r.GetValue(1).ToString();
parameters[2] = r.GetValue(2).ToString();
parameters[3] = r.GetValue(3).ToString();
parameters[4] = r.GetValue(4).ToString();
d.SetValues(parameters);
invoiceTable.Rows.Add(d);
}
connect.Close();
似乎发生的事情是我在表中添加了一个新行,但旧行仍然存在,并且新行似乎没有任何值(一堆空白文本框,我知道此查询在我的测试用例中返回一个结果。)
有人可以向我解释我必须做什么吗?
答案 0 :(得分:3)
我相信Rows.Add()有一个字符串数组的重载。如果你正在创建一个字符串数组,为什么不尝试使用它? 即代替:
d.SetValues(parameters);
invoiceTable.Rows.Add(d);
你会使用:
invoiceTable.Rows.Add(parameters);
或者,如果你仍然想创建一个DataGridViewRow对象并在其上调用setvalues,我认为你需要将数组转换为Object类型的数组,或者将每个值作为它自己的参数传递而不是传递数组。
答案 1 :(得分:3)
我相信你需要在调用setvalue之前调用.CreateCells(GridName)