1

我在页面加载事件中动态地在 datagridview 中添加数据。但我收到一个错误,指出索引超出范围。(“必须为非负数且小于 datagridview 中 collection.parameter 名称的大小。”)

以下是代码:

        dataGridView1.Rows.Add();

        dataGridView1.Rows[0].Cells[0].Value = "Basic";
        dataGridView1.Rows[0].Cells[1].Value = "Basic";
        dataGridView1.Rows[1].Cells[0].Value = "PDALLW";
        dataGridView1.Rows[1].Cells[1].Value = "Professional Development Allow";
        dataGridView1.Rows[2].Cells[0].Value = "BPAllw";
        dataGridView1.Rows[2].Cells[1].Value = "Business Promotion Allowance";
4

3 回答 3

1

调用Add(3)而不是Add(). 您还可以扩展它以在任何给定时间根据需要添加尽可能多的行。MSDN 链接

于 2012-08-09T13:29:06.520 回答
1

您的网格没有行。您一定没有绑定它,或者您超出了它拥有的行数。

  1. 确保在访问其行之前绑定网格。

  2. 确保您不访问不存在的行索引。

于 2012-08-09T13:11:26.220 回答
1

您似乎只添加了一行。因此,您只能访问第 0行。除非您创建三行,否则调用dataGridView1.Rows[1]和将失败。dataGridView1.Rows[2]

解释:

dataGridView1.Rows.Add();

这会向 DataGridView 添加一行。所以你有一个索引为 0 的行(行索引从 0 开始)。您可以像之前那样设置第 0 行的值:

dataGridView1.Rows[0].Cells[0].Value = "Basic";

但是然后您尝试将值设置为索引为 1 的行(第二行):

dataGridView1.Rows[1].Cells[0].Value = "PDALLW";

这将失败,因为您只添加了一行(调用Rows.Add一次)。如果您想要三行,请dataGridView1.Rows.Add();在设置单元格值之前调用三次。

于 2012-08-09T13:11:26.290 回答