以编程方式将行添加到DataGridTable

时间:2009-01-01 03:55:19

标签: c# .net datagridview

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

你会使用:

invoiceTable.Rows.Add(parameters);

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

答案 1 :(得分:3)

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