以编程方式向DataGridTable添加行

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();

似乎发生的情况是,我在表格中添加了一行新记录,但旧记录仍然存在,并且新记录似乎没有任何值(一堆空文本框,而我知道在我的测试用例中此查询返回一个结果)。
有人能向我解释一下我该怎么做吗?
2个回答

3

我认为在调用setvalue之前,您需要先调用.CreateCells(GridName)。


3

我相信Rows.Add()有一个可以接受字符串数组的重载函数。如果您已经在创建字符串数组,为什么不尝试使用它呢? 例如,不要使用:

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

你只需要使用以下代码:
invoiceTable.Rows.Add(parameters);

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


谢谢,我不知道有重载版本。现在它可以工作了。 - Elie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接