2012-10-02 17 views
2

您能否幫我解決這個問題,即使我在gridview中檢查控件時,我也會將複選框控件值設置爲false。如何獲取gridview中的複選框值

for (int i = 0; i < GridView1.Rows.Count; i++) 
{ 
    CheckBox CheckBox1 = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1"); 

    if (CheckBox1 != null) 
    { 
     if (CheckBox1.Checked) 
     { 
      query = GridView1.Rows[i].FindControl("Label1") + ","; 
     } 
    } 
} 

回答

2

你是在Page_Load方法上進行數據綁定嗎?如果是的話,你必須這樣做:

if(!IsPostBack) 
{ 
    GridView1.DataSource = YourData; 
} 

如果你不這樣做,你的DataGridView將哪怕是一個PostBack數據綁定。通過這種方式,無論您選中什麼,DataGridView都將從您的回傳數據源中重新填充。

使用上面的代碼,當你做if(!IsPostBack)時,它將保留複選框的viewstate值,並且你得到正確的Checked狀態。

+0

非常感謝Leniel ....這工作!!!!!!!!!! – Nanda

+0

很高興聽到... :) –

+0

Leniel可以請你再次幫我,是找到列值(標籤字段)的正確方法(標籤)GridView1.Rows [i] .FindControl(「Label1」) – Nanda

0

裏面的複選框設計添加以下屬性

工具提示= 「<%#Container.DataItemIndex + 1%>」,然後下面是後面

for (int i = 0; i < gdview.Rows.Count; i++) 
    { 
     string labeldetail = ""; 

     CheckBox cbox = (CheckBox)gdview.Rows[i].Cells[0].FindControl("CheckBox1"); 

     if (cbox != null) 
     { 
      if (cbox.Checked == true) 
      { 

       int rowsNo = (Convert.ToInt16(city.ToolTip) - 1); //Convert.ToInt16(SrNo); 
       labeldetail = ((Label)gdview.Rows[rowsNo].FindControl("labelid")).Value; 

}

代碼