2012-08-14 3 views
-3

gridview 행 명령 편집 및 삭제를 사용하고 있습니다. 언급 된대로 특정 행 데이터가 텍스트 상자에 표시되는 링크를 클릭하면범위를 벗어나는 인덱스 해결 오류

1 루프 작동하지만 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

+0

그런데'else' 블록에 여는 중괄호가 없습니다 ... – Marlon

+0

GrdBuilding.Rows.Count> = index와 같은 인덱스를 사용하여 확인하십시오. –

답변

2

컬렉션의 크기보다 음이 아닌 및 작아야합니다 당신이 우리를 보여줍니다.

나는 문제를 찾기 위해 할 수있는 일의 관점에서 대답하려고 노력할 것이다.

코드를 디버깅해야합니다. 이것은 기본적인 절차이며 귀하의 질문을 읽을 때, 당신이 그것을하지 않은 것 같습니다.

  1. 나를위한 첫 번째 단계는 IDE의 else if 행에 중단 점을 설정하는 것입니다.

  2. 실행이 중지되면 e.CommandArgument

    값 ==> 잘못 또는 정의되지를 체크?

  3. 이제 GrdBuilding_RowCommand(...)이 호출 된 곳으로 이동하십시오. e.CommandArgument의 출처는 어디입니까? 로직을 설정하는 방법에 문제가 있습니다.

여기에서 문제가 발생하거나 코드에서 뭔가 명확하지 않은 코드가있는 지점을 발견하게됩니다. 거기에 새로운 중단 점을 설정하고 코드를 단계별로 실행하여 e.CommandArgument을 만드는 과정을 지켜보십시오.

+0

나는 결과를 얻었다. ..... 나는 linkbutton delete를위한 CommandArgument를 호출하지 않았다. .. ur 소중한 대답 사람을위한 감사합니다;) – Basava

관련 문제