我应该能够从ASP.NET页面事件处理程序更改其他控件吗?

时间:2008-11-07 10:42:03

标签: asp.net controls page-lifecycle

我正在尝试从复选框的CheckedChanged事件处理程序中禁用标签控件。我能做到吗?

目前,如果我将Enabled设置为false,则在页面重新加载时不会发生任何变化。如果我在Page_Load中执行相同的操作,那么我会看到更改。

澄清:

这不起作用:

protected void chkNeverExpires_CheckedChanged(object sender, EventArgs e)
{
    this.lblMessage.Enabled = false
}

但这样做:

protected void Page_Load(object sender, System.EventArgs e)
{
    this.lblMessage.Enabled = false
}

1 个答案:

答案 0 :(得分:2)

你确定你的事件按你期望的顺序开火吗?在所有回发方法上放置断点并观察会发生什么,您是否在任何地方重置启用状态?你对任何事情都有enableviewstate = false吗?

编辑:你知道CheckedChanged在你从另一个控件回发之前没有开火,或者你在checbkbox上有AutoPostBack = true吗?

这很好用:

<asp:Label runat="server" ID="lblTest">test</asp:Label>
<asp:CheckBox runat="server" ID="chkCheck" AutoPostBack="true" />Check

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    chkCheck.CheckedChanged += chkCheck_CheckedChanged;
}

private void chkCheck_CheckedChanged(object sender, EventArgs e)
{
    lblTest.Enabled = false;
}