代码之家  ›  专栏  ›  技术社区  ›  Shawn Steward

ASP.NET复选框不允许将Visible设置为true

  •  1
  • Shawn Steward  · 技术社区  · 14 年前

    我正在Visual Studio.NET 2003(Yeeich)中处理一个旧的Web应用程序,我遇到了一个问题,它的复选框无法将可见性设置为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 . 这里可能发生什么事?没有任何事件发生或其他事情发生…这真是让我大吃一惊。谢谢你的帮助。

    3 回复  |  直到 13 年前
        1
  •  5
  •   Saturn K    14 年前

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

        2
  •  0
  •   Mausimo    14 年前

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

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

    使用代码隐藏中的ID访问它…

        3
  •  0
  •   SutharMonil    13 年前

    你看到你提到过runat=“server”。

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

    此外,请检查“属性”部分中的ClientIdmode属性。 如果它是静态的或继承的,您将得到它,正如您在代码中提到的那样。

    但是如果你使用了其他值,比如autoid,可预测的,那么就这样做,

    这个,

    <%=chkTraining.ClientID%>
    

    会给你客户ID。 在获取客户端ID之后,可以使用它访问该控件的属性。 例如,

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