解决索引超出范围错误

时间:2012-08-14 05:01:59

标签: c#

我正在使用gridview行命令编辑和删除。当我点击特定行数据显示在文本框上的那些链接时。

第一个循环正在运行,但e.CommandName == "deletevalue"显示错误

  

指数超出范围。必须是非负的且小于集合的大小

protected void GrdBuilding_RowCommand(object sender, GridViewCommandEventArgs e)
    {

        int index = Convert.ToInt32(e.CommandArgument);
        if (e.CommandName == "editvalue")
        {

            TxtBuildingid.Text = GrdBuilding.Rows[index].Cells[1].Text;
            TxtBuildingCode.Text = GrdBuilding.Rows[index].Cells[2].Text;
            TxtBuildingName.Text = GrdBuilding.Rows[index].Cells[3].Text;
            DrpBuilding.Text = GrdBuilding.Rows[index].Cells[4].Text;
            if (GrdBuilding.Rows[index].Cells[5].Text.ToString() == "True")
            {
                ChkisActive.Checked = true;
            }
            else
            {
                ChkisActive.Checked = false;
            }

            BtnSave.Text = "Update";
        }



        else if (e.CommandName == "deletevalue")
        {
            TxtBuildingid.Text = GrdBuilding.Rows[index].Cells[1].Text;
            TxtBuildingCode.Text = GrdBuilding.Rows[index].Cells[2].Text;
            TxtBuildingName.Text = GrdBuilding.Rows[index].Cells[3].Text;
            DrpBuilding.Text = GrdBuilding.Rows[index].Cells[4].Text;
            if (GrdBuilding.Rows[index].Cells[5].ToString() == "True")
            {
                ChkisActive.Checked = true;
            }
            else
                ChkisActive.Checked = false;
            }

            BtnSave.Text = "Delete";
        }

1 个答案:

答案 0 :(得分:2)

我们无法用“执行此操作,然后它会起作用”来回答这个问题,因为问题不在您向我们展示的代码中。

我将尽力回答您可以采取的措施来解决问题。

你需要调试你的代码。这是一个基本的程序,当我读到你的问题时,在我看来,你还没有完成它。

  1. 我的第一步是在IDE的else if行设置一个断点。

  2. 当执行停止时,请检查e.CommandArgument

    的值

    ==>是错还是未定义?

  3. 现在,回到已调用GrdBuilding_RowCommand(...)的位置。 e.CommandArgument来自何处?关于如何设置值的逻辑必须存在问题。

  4. 在那里你会发现问题,在代码中找到另一个发生了一些你不清楚的事情。在那里设置一个新的断点并逐步执行代码,观察创建e.CommandArgument的过程。