【问题标题】:asp.net checkbox with OnClick="return false" (<== read only). How to change to "return true" (<== can write) and back in code behind带有 OnClick="return false" 的 asp.net 复选框(<== 只读)。如何更改为“return true”(<== 可以写)并返回后面的代码
【发布时间】:2016-03-19 08:34:24
【问题描述】:

我有一个 asp:checkboxOnClick="return false" '关闭'它以进行更改(这是我发现的最接近 ReadOnly=true 的等效项)。
我也有一个按钮。
当我单击按钮时,我需要代码隐藏 (C#) 将复选框更改为“返回 true”,即:“打开”它以进行检查或取消检查。再次单击该按钮应再次“关闭”它。

简而言之 - 我如何在后面的代码中在这两种状态之间切换?

HTML:

<asp:Button runat="server" ID="my_Button" Text="click me" OnClick="my_Button_Click" />
<asp:CheckBox runat="server" ID="my_CheckBox" Checked="true" OnClick="return false;" />

后面的代码:

    protected void my_Button_Click(object sender, EventArgs e)
    {
       // here is where the toggling should come...     <============
    }

【问题讨论】:

  • 听起来您只需在单击事件中将 Checkbox 的 Enabled 属性设置为 False 即可。我想你会想要使用 ASP UpdatePanel 来包装复选框控件,否则整个页面可能会重新加载。

标签: c# asp.net checkbox readonly


【解决方案1】:

正如您在此处看到的:OnClick vs OnClientClick for an asp:CheckBox? - 没有 OnClick 复选框。您应该改用 OnCheckedChanged。 我已对问题进行了小修复:

<asp:Button runat="server" ID="my_Button" Text="click me" OnClick="my_Button_Click" />
    <asp:CheckBox runat="server" ID="my_CheckBox" Checked="true" OnCheckedChanged="my_checkbox_click" />

以及背后的代码:

protected void my_checkbox_click(object sender, EventArgs e)
    {
    }

    protected void my_Button_Click(object sender, EventArgs e)
    {
        my_CheckBox.Enabled = !my_CheckBox.Enabled;            
    }

【讨论】:

  • 谢谢,但我认为我不够清楚...我不希望在单击复选框时触发任何事件。我需要的是,只要单击 button,复选框就会从 OnClick="return false" 更改为 OnClick="return true"(并返回)。无论如何,我想我找到了如何做到这一点,并在我验证它有效后将答案发布在这里。
【解决方案2】:

为了实现这一点,我添加了一个HiddenField,并在后面的代码中使用了它。
HTML:

<asp:HiddenField runat="server" ID="my_Hidden_Field" Value="readonly" />
<asp:Button runat="server" ID="my_Button" Text="click me" OnClick="my_Button_Click" />
<asp:CheckBox runat="server" ID="my_CheckBox" Checked="true" OnClick="return false;" />

后面的代码:

    protected void my_Button_Click(object sender, EventArgs e)
    {
        if (my_Hidden_Field.Value == "readonly")
        {
            my_Hidden_Field.Value = "canwrite";
            my_CheckBox.Attributes.Add("onclick", "return true;");
        }
        else
        {
            my_Hidden_Field.Value = "readonly";
            my_CheckBox.Attributes.Add("onclick", "return false;");
        }
    }

(像往常一样,我寻找一两天的解决方案,放弃,在这里发布一个问题,然后我想出一个答案......希望这对其他人有帮助:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2022-11-13
    相关资源
    最近更新 更多