我正在尝试从按钮单击上的动态创建的复选框中读取。问题是,选中该复选框后,在提交点击时无法正确读取进一步取消选中操作。
编辑:该复选框最初是通过调用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();
}
答案 0 :(得分: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
吗?
答案 1 :(得分: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;
}