2012-11-25 51 views
0

我將數據綁定到Page_Load中的gridview,然後在同一Page_Load中添加一列不屬於數據綁定的複選框。無法訪問按鈕單擊複選框的值c#

然後,當按下按鈕時,我想檢查是否有任何框被選中。但是,當我在我的button_click方法中查找複選框時,複選框似乎完全消失。

我與

foreach (GridViewRow gvr in GridView1.Rows) 
{ 
    CheckBox cb = (CheckBox)gvr.FindControl("check" + gvr.Cells[2].Text); 
    ... 
} 

找他們,我有一種預感,他們可能會被破壞掉回發,但我不知道如何確保這並不發生。

我的Page_Load方法中的所有內容都包含在if(!IsPostBack)語句中。

有的問我的Page_Load:

foreach (GridViewRow gvr in GridView1.Rows) {

   TableCell tc = new TableCell(); 

       CheckBox cb = new CheckBox(); 

       cb.ID = "check" + gvr.Cells[2].Text; 

       tc.Controls.AddAt(0, cb); 

       gvr.Cells.AddAt(0, tc); 

      } 

我認爲這是相關的部分。

+0

請向我們展示您的'Page_Load'事件。 –

+0

什麼是細胞[2]?文字不能更改? – Pleun

+0

你是否禁用了頁面的瀏覽狀態?如果是,則至少爲複選框和其他控件標記_EnableViewState =「true」_,在回發過程中要保留其中的值。如果不是,那麼發佈Page_Load事件和aspx部分,如果您正在使用javascript或jQuery進行任何處理。 –

回答

3

創建動態控件時,請將創建它們的代碼(即複選框)放入Page_Init而不是Page_Load
您還應仔細檢查在其中創建複選框的訂單和他們收到的ID在每個回發中是否相同。
如果由於某種原因gvr.Cells[2].Text回發之間發生變化,您應該考慮一個更好的邏輯,在其中標識您的複選框。

+0

謝謝,我認爲這是答案,但一個問題。我需要訪問在page_load中創建的gridview,以創建我的新動態控件(我需要知道要製作多少個控件)。 – Mason