我正在使用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";
}
答案 0 :(得分:2)
我们无法用“执行此操作,然后它会起作用”来回答这个问题,因为问题不在您向我们展示的代码中。
我将尽力回答您可以采取的措施来解决问题。
你需要调试你的代码。这是一个基本的程序,当我读到你的问题时,在我看来,你还没有完成它。
我的第一步是在IDE的else if
行设置一个断点。
当执行停止时,请检查e.CommandArgument
==>是错还是未定义?
现在,回到已调用GrdBuilding_RowCommand(...)
的位置。 e.CommandArgument
来自何处?关于如何设置值的逻辑必须存在问题。
在那里你会发现问题,在代码中找到另一个发生了一些你不清楚的事情。在那里设置一个新的断点并逐步执行代码,观察创建e.CommandArgument
的过程。