2012-08-14 171 views
-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"; 
     } 
+1

没有关于'e.CommandName ==“deletevalue”'会抛出一个索引超出范围异常(如果你想成为技术,但不要对此假设挑剔)。该块内的确切线会抛出错误? – Marlon 2012-08-14 05:42:45

+0

顺便说一句,你缺少你的'else'块中的开口大括号... – Marlon 2012-08-14 05:52:13

+0

在使用它之前检查像这样的GrdBuilding.Rows.Count> = index索引。 – 2012-08-14 05:55:42

回答

2

我们不能以“做到这一点,那么它会工作”方面回答这个问题,因为这个问题是不是在代码你向我们展示。

我会尽力回答您可以做些什么来发现问题。

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

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

  2. 当执行停在那里,检查e.CommandArgument

    值==>这是错误或不明确?

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

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

+0

我得到了结果.....我没有为linkbutton删除调用CommandArgument ....感谢你的宝贵答复乡亲;) – Basava 2012-08-14 07:06:15