【发布时间】:2012-11-03 06:14:22
【问题描述】:
我正在动态创建一堆复选框:
CheckBox chkRead = new CheckBox();
chkRead.ID = "chk1";
chkRead.AutoPostBack = true;
chkRead.CheckedChanged += new EventHandler(CheckBox_CheckedChanged);
CheckBox chkPost = new CheckBox();
chkRead.ID = "chk2";
chkPost.AutoPostBack = true;
chkPost.CheckedChanged += new EventHandler(CheckBox_CheckedChanged);
protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
}
我想要做的是: 当我检查 chkPost CheckBox 时,我希望也检查 chkRead CheckBox
在 CheckBox_CheckedChanged 事件中,我只能访问被点击的 CheckBox 但我不知道如何检查该事件中的另一个复选框。
【问题讨论】:
-
你试过
control.FindControl("chk1");吗?如果您在回发时重新创建了动态复选框,您应该能够访问它... -
ASP.NET FindControl 不是递归的。您需要深入了解这一点,或者在添加 chkRead 的容器上调用 FindControl。
-
但是您是否使用
FindControl遍历容器以到达您的复选框? -
@RobertKoritnik 感谢您提出的所有建议,我认为使用 NamingContainer 来查找 chk 所在的容器,正如 Ann L. 所建议的那样,这正是我所需要的。
-
是的,这简化了遍历,因为您无需遍历整个页面控件层次结构即可立即进入容器。好主意是的。我已经授予它了……它还表明遍历也可以正常工作,但性能损失要高得多。