2012-08-09 54 views
1

我在页面加载事件中动态地在datagridview中添加数据。但是我收到一个错误,指出索引超出范围。 (“必须为非负且小于DataGridView中collection.parameter名的大小。”)指数超出范围。必须是非负数,并且小于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"; 
+0

您在这里使用3行,但只添加一行。也许这是问题? – 2012-08-09 13:11:23

+0

这是绑定到DataGrid的好链接。 http://stackoverflow.com/questions/5809816/datagrid-binding-in-wpf – Omzig 2012-08-09 13:13:12

回答

1

拨打Add(3)而不是Add()。您还可以扩展此功能以在任何给定时间添加所需的行数。 MSDN Link

+0

感谢它的工作。我需要问一个问题,我想在每一行上添加两个单选按钮,我该怎么做? – Maddy 2012-08-09 13:34:50

1

网格没有行。你不能捆绑它,或者你超过了它所拥有的行数。

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

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

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();三次。

+0

我不明白请陈述我 – Maddy 2012-08-09 13:16:43

+0

我已经添加了详细的解释。 – 2012-08-09 13:21:36

+0

如果我有100行比我需要添加dataGridView1.Rows.Add();它的坏影响是100倍。有没有解决方案,如果我有100行 – Maddy 2012-08-09 13:24:37

相关问题