C# 无法使用javascript显示asp面板

C# 无法使用javascript显示asp面板,c#,javascript,html,asp.net,C#,Javascript,Html,Asp.net,我有一个asp面板如下 <asp:Panel ID="panele" runat="server"> <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> <legend align="left">Show the current values</legend> </td> <tr> <td>&l

我有一个asp面板如下

 <asp:Panel ID="panele" runat="server">

 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

 <asp:panel>
 <Datechooser Width="100px" runat="server" ID="BirthDate" 
  onselect="return setpanelcontrols();"                              
 </Datechooser>


enter code here

function setpanelcontrols() 
{
var objpanele=document.getElementById("<%=panele.ClientID%>");
objpanele.style.display="block";
return true;
}
 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>
在插入模式下,面板应显示并按预期工作。在更新模式下,当用户尝试编辑出生日期值(它是日期选择器控件)时,应显示面板。更新模式也使用上述功能,并且仅当选择了出生日期值时,才应显示面板。因此,我编写了一个javascript代码来显示面板,如下所示

 <asp:Panel ID="panele" runat="server">

 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

 <asp:panel>
 <Datechooser Width="100px" runat="server" ID="BirthDate" 
  onselect="return setpanelcontrols();"                              
 </Datechooser>


enter code here

function setpanelcontrols() 
{
var objpanele=document.getElementById("<%=panele.ClientID%>");
objpanele.style.display="block";
return true;
}
 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>

Visible=False的控件不会作为HTML的一部分呈现。尝试在代码中隐藏和显示如下CSS:

 panele.CssClass= "myHidePnlclass";
 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>
或者我认为适合您当前代码的内容:

panele.Style["display"] = "none";
 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>
使用

 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>
在asp面板上,然后在JavaScript中:

 function selectvalues ()
 {
     if(YOUR CONDITION){
         $('#panele').hide();
     }
 }
 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>

将asp:Control Visible属性从代码隐藏设置为false时。浏览器不会呈现该元素,并且您无法使其在客户端可见(jquery、javascript)

 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>
要对代码隐藏进行替换,请执行以下操作:

panele.Visible=False;
 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>

 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>

我发现标签有问题。面板呈现为div,我应用了带有visibly hidden的css样式。最后,当我尝试检查元素时,我发现了一件有趣的事情。下面是我之前发布的asp代码。然而,我添加了一个div来查看发生了什么。

 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>

显示当前值
下面是css via inspect元素

 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>
   <div id="BasicInfo_pane" style="visibility:hidden;">
                 <div id="BasicInfo_panele" class="styleset1" style="visibility:hidden;display:none;">
 </div></div>

    <table> 
     <tbody>
     <tr>
     <td> fieldset="fsFieldset"........ </td> </tr> </tbody> </table>

fieldset=“fsFieldset”。。。。。。。。

显然,由于某种原因,面板在字段集之前结束,而div在字段集之前结束(我认为开始和结束标记没有正确组织,不知道为什么)。我认为这就是为什么面板内部的字段集没有隐藏。面板是隐藏的,由于字段集没有隐藏,所以输出显示在浏览器中,我误解了面板没有隐藏。

但它不工作。我按照你的建议尝试了下面的方法,但出于某种原因我无法隐藏它。我在我的本地电脑上测试了这个方法,效果很好。是否没有其他代码干扰?panel.Attributes.Add(“style”,“display:none”);面板。样式。添加(“显示”、“无”);Dim sb As New System.Text.StringBuilder'sb.Append(Chr(13)&“&Chr(13))”Me.panel.Style(“display”)=“hidden”=“hidden””sb.Append(“&Chr(13))(我的代码在vb中)Ya..我做了同样的事情,html显示了面板中的所有控件我的错误是显示无而不是隐藏的panel.Style(“display”)=“无”;您在使用JQUERY时没有给出任何上下文。问题没有提到它的用途
 <tr><td><fieldset ID="fsFieldset" class="crossbrowserfieldselect"> 
 <legend align="left">Show the current values</legend>
 </td>
 <tr> <td><asp:Textbox id ="txtstudent" runat"server"></td>

  <asp:panel>
  </div>