复选框选中或未选中不会触发事件
本文关键字:事件 复选框 | 更新日期: 2023-09-27 18:14:34
有一个我在我工作的地方工作的现有页面,在ascx中有一个复选框,它在它的。cs中有一个CheckedChange事件。我对该页面的问题是,当我运行网站并勾选该框时,它永远不会触发事件,而是通过On_Load事件,它永远不会通过事件……我不确定为什么它没有触发事件…
<asp:CheckBox runat="server" ID="OptionSelected"
OnCheckedChanged="OptionSelected_CheckedChanged"
AutoPostBack="true" />
<asp:Label runat="server" ID="OptionHeader"></asp:Label>
protected void OptionSelected_CheckedChanged(object sender, EventArgs e)
{
//some code here
}
PS:这是一个控件,对不起,我忘了说。另一个症状是控件所在的页面…它会意外刷新,清除一些数据(包括选中的复选框),并且无法找出是什么导致的。
知道为什么会发生这种情况吗?我应该注意什么?
public PortalInfoPortal myPortal
{
get
{
return portal.GetPortalInfo();
}
}
protected void Page_Load(object sender, EventArgs e)
{
//added this an nothing
OptionSelected.CheckedChanged += new EventHandler(OptionSelected_CheckedChanged);
if (myPortal != null)
{
lblOptionMsg.Text = "(" + myPortal.MaxOptionSelectedCharacters.ToString() + " char max)";
txtMessage.MaxLength = myPortal.MaxOptionSelectedCharacters;
var maxLength = myPortal.MaxOptionSelectedCharacters;
maxCheck.ValidationExpression = @"^['s'S]{0," + maxLength.ToString() + "}$";
}
//There is no binding of any type here
}
你需要打开viewstate来改变事件。Viewstate是服务器如何知道在页面最初被提供时以及在它被发回之前控件的状态。如果没有这些信息,它就不知道值是否发生了变化。查看是否启用了viewstate
您是否可能创建usercontrol(使用Page.LoadControl()
)并动态地将其添加到控件树中,然后忘记了这些步骤需要在每次回发时执行?否则,用户控件在回发时将不再存在,并且不会触发它的任何事件。