2016-10-17 74 views
0

我試圖用代碼創建一個複選框控件,並且點擊時有一個按鈕顯示該複選框的狀態(TRUEFALSE),但問題是複選框始終未選中(FALSE) 。任何人都可以解釋這一點?謝謝!爲什麼我的複選框控件始終未選中(false)?

P.S.我需要將loadCheckBox()保留在Button單擊事件中,以便執行某些操作。

public partial class Default : System.Web.UI.Page 
{ 
    CheckBox chkBox = new CheckBox(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      loadCheckBox(); 
     } 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Response.Write(chkBox.Checked); // <<< always shows "False" 
     loadCheckBox(); 
    } 

    public void loadCheckBox() 
    { 
     Table1.Rows.Clear(); 

     TableRow tRow = new TableRow(); 
     TableCell cell = new TableCell(); 

     cell.Controls.Add(chkBox); 
     tRow.Cells.Add(cell); 
     Table1.Rows.Add(tRow); 
    } 
} 

回答

0

移動loadCheckBox()以外的if (!IsPostBack)和從Button1_Click除去loadCheckBox()。需要在每個頁面加載時添加動態添加的控件。在你的情況下,複選框不存在於回發中,因此它是錯誤的。

+0

這種簡單的方法是每次發生回發時都會添加一個新的複選框,並刪除現有複選框及其值。 – Xiaoy312

0

每次發回帖子時,都會創建一個新的Default頁面實例,chkBox也會創建。這就是爲什麼它從不被檢查。

Button1_Click處理程序中,您想獲取最後一行Table1的第一個單元格並閱讀其Checked屬性。

+0

謝謝。這是一個好主意,但它不起作用。我試圖在單元格中獲得控制權,並獲得了相同的結果。這是我在Buttin1_Click()中的代碼 – BadBytes

+0

protected void Button1_Click(object sender,EventArgs e) { TableRowCollection rows = Table1.Rows; (TableRow row in rows) foreach(TableRow row in rows) TableCellCollection cells = row.Cells; (細胞中的表細胞) var controls = cell.Controls; (控件中的CheckBox chk) {0} } } } } – BadBytes