2013-03-20 2 views
1

나는 각 행에 체크 박스를 사용하고있는 gridview를 가지고 있습니다. 나는 각 행의 확인란을 액세스하려고 노력하고 어떤 checkboxes checked.buut 내가 아래의 code.the 조건을 항상 실행하려고 할 때 false 거짓과 상태가 code.kindly에 의해 도달 적이 있다면 도와 줘. 조심해.gridview에서 선택된 체크 박스에 액세스

protected void btn_3id_Click(object sender, EventArgs e) 
{ 
    string str = ""; 
    string srr = ""; 
    for (int i = 0; i < GridView1.Rows.Count;i++) 
    { 
     CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1"); 
     if (chk.Checked==true)  
     {   
      if (str == "")  
      { 
       str = GridView1.Rows[i].Cells[0].Text.ToString(); 
      }  
      else  
      {   
       srr = str + "," + GridView1.Rows[i].Cells[0].Text.ToString(); 
      } 
     } 
    } 
    Session["Card_id"] = str; 
    Response.Redirect("ID.aspx"); 
} 

답변

2

코드가 잘 보인다.
문제는 페이지로드시 gridview를 바인딩하는 것일 수 있습니다.
시도 그리드는

if(!Page.IsPostBack) 
{ 
    //code to bind the gridview 

} 
+0

원래 문제였던 하만 셰크 하인. 감사합니다 남자 – Robin

+0

@ 로빈 –

0

난 단지 당신이 당신의 gridview 각 페이지로드에 다시 게시를 확인하지 않고 구속력이 있음을 추측 할 수있다. 이로 인해 체크 박스의 현재 상태가 느슨해집니다.

if(!Page.IsPostBack) 
{ 
    GridView1.DataSource = yourDataSource; 
    GridView1.DataBind(); 
} 

은 또한 당신의 검사처럼 코드에 약간의 개선을 수행 할 수 있습니다 : 당신이 GRIDVIEW에 데이터 소스를 할당하는 경우 지금처럼 다시 게시를 확인

:

if(chk.Checked == true) 

는 다음과 같이 교체 할 수 있습니다

if(chk.Checked) //Since it returns a bool value. 

연결을 위해 여러 문자열 변수를 생략 할 수 있습니다. 그것의 더 나은 당신이 StringBuilder, 그래서 당신의 코드가 될 것이다 (why it is better 참조) 사용하는 경우 :

protected void btn_3id_Click(object sender, EventArgs e) 
{ 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < GridView1.Rows.Count;i++) 
    { 
     CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1"); 
     if (chk.Checked==true)  
     {   
       sb.Append() GridView1.Rows[i].Cells[0].Text.ToString(); 
     }  
    } 
    Session["Card_id"] = sb.ToString(); 
    Response.Redirect("ID.aspx"); 
} 
0
if(!Page.IsPostBack) 
{ 
    // 
} 

다시 게시가 CS 파일에 중요한 역할을한다 페이지로드의 다음 섹션에서 바인딩. 페이지로드시 값을 지우면 checkbox 값이 널입니다. 코드가 정상입니다. 그냥 해보 려구요 ...

관련 문제