C# 无法使用javascript显示asp面板
我有一个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: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>