3

如何以编程方式将行添加到 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();

似乎发生的事情是我在表中添加了一个新行,但旧行仍然存在,并且新行中似乎没有任何值(一堆空白文本框,我知道这个查询在我的测试用例中返回一个结果)。

有人可以向我解释我必须做什么吗?

4

2 回答 2

3

我相信 Rows.Add() 对字符串数组有重载。如果您要创建一个字符串数组,为什么不尝试使用它呢?即代替:

d.SetValues(parameters);
invoiceTable.Rows.Add(d);

你会使用:

invoiceTable.Rows.Add(parameters);

或者,如果您仍想创建一个 DataGridViewRow 对象并在其上调用 setvalues,我认为您需要将数组转换为 Object 类型的数组,或者将每个值作为它自己的参数传递,而不是传递数组。

于 2009-01-01T04:10:50.713 回答
3

我相信您需要在调用 setvalue 之前调用 .CreateCells(GridName)

于 2009-10-29T22:10:34.757 回答