选中或取消选中复选框不会触发事件

时间:2011-11-11 19:30:09

标签: c# asp.net

我正在工作的地方有一个现有的页面,ascx中有一个复选框,它的.cs中有一个CheckedChange事件。我在该页面遇到的问题是,当我运行网站并选中该框,它永远不会触发事件,而是通过On_Load事件并且它永远不会传递事件......我不确定为什么它不会触发事件......

 <asp:CheckBox runat="server" ID="OptionSelected" 
   OnCheckedChanged="OptionSelected_CheckedChanged"
  AutoPostBack="true" />&nbsp;
 <asp:Label runat="server" ID="OptionHeader"></asp:Label>

 protected void OptionSelected_CheckedChanged(object sender, EventArgs e)
    {
       //some code here
    }
PS:这是一个控件ascx抱歉,我忘了提。另一个症状是该控件的页面......它会意外刷新,清除一些数据(如果选中它则包括复选框)并且无法找出导致它的原因。

有关为什么会发生这种情况的任何想法?我应该寻找的东西?

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
     }

2 个答案:

答案 0 :(得分:3)

您需要启用viewstate以更改事件。 viewstate是服务器如何知道页面最初提供时以及返回之前控件的状态。没有这些信息,它不知道值是否已经改变。检查您是否启用了viewstate。

答案 1 :(得分:0)

您是否可以创建usercontrol(使用Page.LoadControl())并将其动态添加到控制树中,然后忘记每次回发都需要执行这些步骤?否则,回发中不再存在用户控件,并且不会触发任何事件。