-3

我正在使用 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";
        }
4

1 回答 1

2

我们不能用“这样做,然后它会起作用”来回答这个问题,因为问题不在您向我们展示的代码中。

我将尝试回答您可以做些什么来找到问题。

你需要调试你的代码。这是一个基本程序,当我阅读您的问题时,在我看来,您还没有这样做。

  1. 对我来说,第一步是else if在 IDE 中的行上设置一个断点。

  2. 当执行在那里停止时,检查的值e.CommandArgument

    ==> 是错误的还是未定义的?

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

在那里你会发现问题,或者在代码中找到另一个你不清楚的地方。在那里设置一个新的断点并单步执行您的代码,观察创建e.CommandArgument.

于 2012-08-14T06:15:25.783 回答