【问题标题】:ASP.NET UserControl CheckBox OnCheckedChangedASP.NET 用户控件复选框 OnCheckedChanged
【发布时间】:2017-04-12 12:00:48
【问题描述】:

我想创建一个用户控件,其中有一个复选框和一个文本框。如果复选框被选中,则文本框的 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;
        }
    }
}

当我选中或取消选中该复选框时什么都没有发生,我希望它立即更新而不进行回发。

【问题讨论】:

  • 如何处理回发?当引发 CheckedChanged 事件并在 aspx 页面中添加更新面板时,我可能会进行回发,但我不知道该怎么做。

标签: asp.net


【解决方案1】:

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

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

How to disable textbox depending on checkbox checked

希望有帮助

【讨论】:

  • 如果我必须使用回发,我需要改变什么才能让它工作?添加 AutoPostBack="true" ?然后还有别的东西(ViewState)?
  • 客户端:jsfiddle.net/wsqf0eov 服务器端:设置 AutoPostBack = "true"。私人无效 checkBox1_CheckedChanged(对象发送者,EventArgs e){ textBox1.Enabled = checkBox1.Checked;类似的东西。另一件事是每次页面加载时您都在创建控件。尝试在回发时创建它。这是msnd中的参考msdn.microsoft.com/en-us/library/…玩得开心
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-04-13
    • 2012-03-16
    • 2011-07-20
    • 1970-01-01
    • 2011-08-25
    • 2019-04-13
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    相关资源
    最近更新 更多