2010-04-21 66 views
1

我正在使用Visual Studio .Net 2003(yeeich)中的旧Web应用程序,并且出现Checkbox问题,无法将可见性设置为真正。ASP.Net复选框不允许设置可见为真

它宣布为:

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上检查该值。这里可能会发生什么?没有事件发生或其他事情正在发生......这真的是让我陷入循环。谢谢你的帮助。

回答

5

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

+0

男人,我觉得自己像个白痴,我三联发布前检查这一点,原来我一直在寻找在错误的源代码,如果你在正确的文件先看看帮助。谢谢。 – 2010-04-21 17:59:32

0

为什么要申报呢?如果您使用的是后面的代码编号...

+0

这是Visual Studio 2003,我很肯定你必须这样做。以后的版本会自动执行它,但是如果您键入标签并且不将控件拖到窗体上,它将不会为您创建声明。 – 2010-04-21 17:53:40

+0

够公平的,我缺乏vs2003的知识,我用过的所有2005年和2008年的asp.net(在c#中)。我从来没有声明任何我放在.aspx页面(并没有看到任何显式的声明,通过将控件拖放到代码后面的.aspx页面中)。但是在后面的代码中,我可以通过使用id自动访问控件。对不起,我没有任何帮助,祝你好运! – Mausimo 2010-04-21 18:01:04

0

把它在.aspx页面中

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

访问它,你看到你所提到的RUNAT =“服务器”。

因此,当你的页面加载到浏览器(客户端)时,id“chkTraining”变成其他内容......这是一个基本的asp.net动作,它改变了服务器控件的id。

此外,请检查属性部分中的ClientIdMode属性。 如果它是静态的或继承,你会得到它,因为你已经在代码中提到。

但是,如果你使用的任何其他值一样自动识别,预测再做这样的,

<%=chkTraining.ClientID%> 

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

var chk = document.getElementById('<%=chkTraining.ClientID%>'); 

if (chk.checked == true) { 
     alert("checked");     
    } 
    else { 
     alert("unchecked"); 
    }