C# 索引超出范围。必须为非负且小于集合的大小。datagridview中的参数名称?

C# 索引超出范围。必须为非负且小于集合的大小。datagridview中的参数名称?,c#,.net,datagridview,C#,.net,Datagridview,我在页面加载事件中动态地在datagridview中添加数据。但是我得到一个错误,说指数超出了范围。(“必须为非负且小于datagridview中collection.parameter名称的大小。”) 代码如下: dataGridView1.Rows.Add(); dataGridView1.Rows[0].Cells[0].Value = "Basic"; dataGridView1.Rows[0].Cells[1].Value = "Bas

我在页面加载事件中动态地在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";

您的网格没有行。您必须没有绑定它,否则将超出它的行数

  • 确保在访问网格的行之前绑定网格

  • 确保不访问不存在的行索引


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

    说明:

    dataGridView1.Rows.Add()

    这将向DataGridView添加一行。因此,有一行的索引为0(行索引从0开始)。您可以按如下操作设置第0行的值:

    dataGridView1.Rows[0].Cells[0].Value = "Basic";
    
    但是,您可以尝试将值设置为索引为1的行(第二行):


    这将失败,因为您只添加了一行(称为
    Rows.Add
    一次)。如果需要三行,请调用
    dataGridView1.rows.Add()三次。

    调用
    Add(3)
    而不是
    Add()
    。您还可以扩展它,以便在任何给定的时间根据需要添加任意多的行

    这里使用3行,但只添加一行。也许这就是问题所在?这是绑定到DataGrid的一个很好的链接。我不明白,请解释。我已经添加了详细的解释。如果我有100行,我需要添加dataGridView1.rows.add();100倍于它的不良影响。如果我有100行,有什么解决方案吗?通常,当您有这么多数据时,它通常存储在数据库中。因此,不要逐个添加行,而是从数据库加载数据,循环每行,添加新行和填充单元格值的说明只在循环中出现一次。谢谢,它可以工作。我需要问一个问题,我想在每一行上添加两个单选按钮,我如何才能做到这一点?
    dataGridView1.Rows[1].Cells[0].Value = "PDALLW";