【问题标题】:ASP.Net Checkbox Doesn't Allow Setting Visible to TrueASP.Net 复选框不允许将可见设置为真
【发布时间】:2010-04-21 17:16:00
【问题描述】:

我正在使用 Visual Studio .Net 2003 (yeeich) 中的一个旧 Web 应用程序,但我遇到了一个无法将 Visibility 设置为 True 的复选框的问题。

它是这样声明的:

Protected WithEvents chkTraining As System.Web.UI.WebControls.CheckBox 

<asp:CheckBox id="chkTraining" runat="server" Visible="False"></asp:CheckBox>

当我通过以下行进行调试时:

chkTraining.Visible = True

它通过它很好,但是当我在下一行检查这个值时,chkTraining.Visible = False。这里可能发生了什么?没有事件触发或发生其他任何事情......这真的让我陷入困境。感谢您的帮助。

【问题讨论】:

    标签: asp.net webforms checkbox visual-studio-2003


    【解决方案1】:

    可能是它的容器的可见性设置为 false。

    【讨论】:

    • 伙计,我觉得自己像个白痴,在发布之前我检查了三次,结果发现我正在查看错误的源代码...如果您先查看正确的文件会有所帮助。谢谢。
    【解决方案2】:

    为什么要申报?如果你把它放在 .aspx 页面中

    &lt;asp:CheckBox id="chkTraining" runat="server" Visible="False"&gt;&lt;/asp:CheckBox&gt;

    使用后面代码中的 id 访问它...

    【讨论】:

    • 这是 Visual Studio 2003,我很确定您必须这样做。更高版本会自动执行此操作,但如果您键入标签并且不将控件拖到表单中,它不会为您创建声明。
    • 公平地说,我缺乏 vs2003 知识,我只使用了 2005 年和 2008 年的 asp.net(在 c# 中)。我从不需要声明我在 .aspx 页面中放入的任何内容(并且在后面的代码中没有看到任何通过将控件拖到 .aspx 页面上所做的显式声明)。但是在后面的代码中,我可以使用 id 自动访问控件。对不起,我帮不上什么忙,祝你好运!
    【解决方案3】:

    你看到你提到了 runat="server"。

    因此,当您的页面在浏览器(客户端)上加载时,id“chkTraining”会更改为其他内容……这是一个基本的 asp.net 操作,它会更改服务器控件的 id。

    此外,请检查属性部分中的 ClientIdMode 属性。 如果它是静态的或继承你会得到它,就像你在代码中提到的那样。

    但是,如果您使用了任何其他值,例如 AutoId 、 Predictable ,那么就这样做,

    这个,

    <%=chkTraining.ClientID%>
    

    将为您提供客户端 ID。 获取客户端 ID 后,您可以使用它来访问该控件的属性。 例如,

    var chk = document.getElementById('<%=chkTraining.ClientID%>');
    
    if (chk.checked == true) {
            alert("checked");                
        }
        else {
            alert("unchecked");
        }
    

    【讨论】:

      猜你喜欢
      • 2016-02-27
      • 2018-05-10
      • 2016-01-30
      • 2011-06-26
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 2011-07-02
      相关资源
      最近更新 更多