2013-03-20 3 views
1

У меня есть gridview, в котором я использую флажок в каждой строке. Я пытаюсь получить доступ к флажку каждой строки и пытаюсь выяснить, какие флажки были проверены. Когда я пытаюсь запустить приведенный ниже код. Условие всегда является ложным, а внутреннее условие if никогда не достигается кодом.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 к загрузке страницы.
Try сетки связывания в следующем разделе загрузки страницы

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

} 
+0

haan shekhar, который был оригинальной проблемой. Человек мужчина – Robin

+0

@Robin приветствуется –

0

Я могу только догадываться, что вы являются обязательными для вашей gridview на каждой загрузке страницы без проверки PostBack. Это приводит к тому, что флажок освобождает текущее состояние. Итак, где вы назначая DataSource в Gridview, Проверьте PostBack как:

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

также вы можете сделать некоторые незначительные изменения в коде, как чека:

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) 
{ 
    // 
} 

Postback играет важную роль в CS-файл. Если вы очищаете значения при загрузке страницы, вы получите нулевые значения флажка. Вы код в порядке. Просто попробуйте сделать это ...

Смежные вопросы