ASP.NET UserControl CheckBox OnCheckedChanged

时间:2016-01-12 09:40:13

标签: asp.net

我想创建一个UserControl,我将在其中有一个复选框和一个文本框。如果选中该复选框,则textbox的enable属性为true,否则为false。

这就是我在页面中的内容:

<form id="form1" runat="server">
    <div>
        <custom:NullableTextBox ID="NullableTextBox1" OnCheckedChanged="NullableTextBox1_OnCheckedChanged" runat="server"></custom:NullableTextBox>
    </div>
</form>

这是我的UserControl类:

public partial class NullableTextBox : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public NullableTextBox()
    {
        CheckBox1.CheckedChanged += new EventHandler(CKB_CheckedChanged);

        this.Controls.Add(CheckBox1);
        this.Controls.Add(TextBox1);
    }

    private CheckBox CheckBox1 = new CheckBox();
    private TextBox TextBox1 = new TextBox();

    private void CKB_CheckedChanged(object sender, EventArgs e)
    {
        if (CheckBox1.Checked)
        {
            TextBox1.Enabled = true;
        }
        else
        {
            TextBox1.Text = string.Empty;
            TextBox1.Enabled = false;
        }
    }
}

当我选中或取消选中复选框时,没有任何事情发生,我希望它能在不进行回发的情况下立即更新。

2 个答案:

答案 0 :(得分:0)

您执行服务器端事件但不希望进行回发。这意味着您需要使用JavaScript将其添加到客户端。

onclick="document.getElementById('TextBox1').disabled=this.checked;"

How to disable textbox depending on checkbox checked

希望有所帮助

答案 1 :(得分:0)

在复选框中设置AutoPostBack = "true"