0

チェックボックスの 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
}
4

1 に答える 1

2

イベントが期待どおりの順序で起動していることは確かですか? すべてのポストバック メソッドにブレークポイントを設定し、何が起こるかを観察します。有効な状態をどこかでリセットしていませんか? 何かに enableviewstate=false がありますか?

編集: 別のコントロールからポストバックするか、checkbkbox に AutoPostBack=true を設定するまで、CheckedChanged が起動しないことに気付きましたか?

これはうまくいきます:

<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;
}
于 2008-11-07T11:09:19.043 に答える