1

我正在使用 asp.net。我想显示未选中的复选框,但在浏览器中复选框的状态为 true,并且我在服务器端代码中设置了 checkbox.checked=false,但它在浏览器中显示为选中。

这是我的代码

   {<asp:CheckBox ID="SendNotificationCheckBox" runat="server" Checked="false" Enabled="false"    oncheckedchanged="SendNotificationCheckBox_CheckedChanged" AutoPostBack="true"/>}   

我在服务器端尝试了这段代码:

{ protected void SendNotificationCheckBox_CheckedChanged(object sender, EventArgs e)
 {
     if (SendNotificationCheckBox.Checked == true)
     {
         NotificationPanel.Visible = true;
         NotificationMessageTextBox.Text = "Business Listing Named:" + BusinessNameLabel.Text.Trim() + " Will Be Expired On" + NextVerificationDateLabel.Text.Trim() + ".Contact Us To Renew it.";
     }
     else if (SendNotificationCheckBox.Checked == false)
     {
         NotificationPanel.Visible = false;
     }
 }}
4

2 回答 2

0

我知道这不是你问的,但我认为 JavaScript / JQuery 最适合这种事情。将以下代码放在页面头部

<script type="text/javascript">
    function toggleVisibility(cb) {
        var x = document.getElementById("NotificationPanel");
        x.style.display = cb.checked ? "block" : "none";
    }
</script>

并在您的复选框中

<asp:CheckBox ID="SendNotificationCheckBox" runat="server" Checked="false" onclick="toggleVisibility(this);"/>
<asp:Panel runat="server" ID="NotificationPanel" style="display: none;">
    skjhaskjf
</asp:Panel>

或者如果您想使用 JQuery,请将其添加到您的 Head

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("#SendNotificationCheckBox").click(function () {
            $(this).is(':checked') ? $("#NotificationPanel").show() :
                $("#NotificationPanel").hide();
        });
    });
</script>

和你的复选框

<asp:CheckBox ID="SendNotificationCheckBox" runat="server" Checked="false"/>
<asp:Panel runat="server" ID="NotificationPanel" style="display: none;">
    skjhaskjf
</asp:Panel>

这是您想要的问题的解决方案。您取消选中文本框并在PageLoad. 如果你这样做,每次当控件到达服务器时,PageLoad都会执行,并且复选框将被禁用。执行页面加载后,将执行事件“SendNotificationCheckBox_CheckedChanged”。

由于在页面加载中未选中 Checkbox,如果选中 Checkbox,您编写的代码将毫无用处。因此,您必须检查页面是否是第一次加载。如果是这样,请取消选中该复选框,否则不要。你必须通过检查IsPostBack财产来做到这一点

If(!IsPostBack)
{
    CheckBoxID.Checked=false;
    CheckBoxID.Enabled=false;
}
于 2013-08-05T06:18:39.420 回答
0

如果您的复选框在更新面板内,

那么你需要更新你的更新面板..

于 2013-08-05T06:27:17.967 回答