4

我正在尝试在单击按钮时从动态创建的复选框中读取。问题是,一旦选中了复选框,在提交点击时就无法正确读取进一步的取消选中操作。

编辑:复选框最初是通过调用SetSelection如图所示在选择单选按钮列表时创建的。

代码片段如下所示,知道可能是什么问题吗?

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();
}       
4

2 回答 2

4

我已经重新创建了您的示例,并且效果很好。我只能想象你的代码中还有其他东西对意外行为负责。

尝试使用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

于 2012-01-15T17:20:04.003 回答
2

看起来你在声明

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;   

}
于 2012-01-15T17:00:13.087 回答