簡體   English   中英

從動態創建的復選框中獲取錯誤的值

[英]Getting wrong values from dynamically created check box

我試圖從按鈕單擊上的動態創建復選框中讀取。 問題是,選中該復選框后,在提交點擊時無法正確讀取進一步的取消選中操作。

編輯:復選框最初是通過調用SetSelection選擇radiobuttonlist創建的,如圖所示。

代碼片段如下所示,不知道可能出現什么問題?

protected void Page_Load(object sender, EventArgs e)
{    
    if (this.IsPostBack)
    {
    ..
        GenerateDynamicUI();
    }
    ...
}     


private void GenerateDynamicUI(int selectedItem)
{
    ...
    TableCell cellCheckBox = new TableCell();
    CheckBox chkBox = new CheckBox();              
    chkBox.Text = "Consider all";
    chkBox.ID = "chkAll";
    cellCheckBox.Controls.Add(chkBox);

    TableRow chkRow = new TableRow();
    chkRow.Cells.Add(cellCheckBox);
    table.Rows.Add(chkRow);
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
    ...
    bool isChecked = ((CheckBox)table.FindControl("chkAll")).Checked;   

}

private void SetSelection()
{
    int selectedItem = int.Parse(radiobuttonList.SelectedItem.Value);           
    GenerateDynamicUI(selectedItem);
    pnlDynamic.Visible = true;            
}

protected void radiobuttonList_SelectedIndexChanged(object sender, EventArgs e)
{
     SetSelection();
}       

我重新創建了你的例子,它工作正常。 我只能想象你的代碼中有其他東西負責意外行為。

嘗試使用Page_PreInit事件而不是Page_Load來重新創建/操作動態控件:

protected void Page_PreInit(object sender, EventArgs e)
{
    // create controls here
    GenerateDynamicUI();
}

更多信息: http//msdn.microsoft.com/en-us/library/ms178472.aspx

通過“沒准備好”,我認為你的意思是它保持為True並且在你第一次檢查之后永遠不會返回False嗎?

它看起來像你宣布

bool isChecked = ((CheckBox)table.FindControl("chkAll")).Checked;

在btnSubmit中,如果是這樣,每次調用該方法時都會重置為false。 嘗試宣布它的一面。 IE:

bool isChecked;
protected void btnSubmit_Click(object sender, EventArgs e)
{
    ...
    isChecked = ((CheckBox)table.FindControl("chkAll")).Checked;   

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM