使用javascript将面板设置为可见

时间:2013-05-19 13:43:34

标签: javascript html asp.net panel

如何使用javascript显示<asp:Panel>

我已完成以下操作但收到错误(无法读取属性样式为null)

 <asp:Panel runat="server" id="panNonAfricanCountries" Visible="false">

var panNonAfricaDropDown = document.getElementById("panNonAfricanCountries")
if (dropDownFirst == "Yes") {
    panNonAfricaDropDown.style.visibility = "visible";
}

2 个答案:

答案 0 :(得分:3)

asp.net控件上的Visible="false"导致无法在页面上呈现控件

你在这里尝试做的是渲染它,但是用css样式让用户隐藏它直到使用javascript显示它。要归档不使用Visible,但将样式或css设置为Panel。

<asp:Panel ID="PanelId" runat="server" Visible="true" style="visibility:hidden" >
Some Content here...    
</asp:Panel>

asp.Panel呈现为div,您在网页上的html可能会显示为:

<div id="PanelId" style="visibility:hidden">
Some Content here...    
</div>

我说可能是因为我们不确定Id是如何呈现的。要获得它,我们使用PanelId.ClientID,您的最终JavaScript代码将是:

var panNonAfricaDropDown = document.getElementById("<%=PanelId.ClientID%>");
if (dropDownFirst == "Yes" && panNonAfricaDropDown) {
    panNonAfricaDropDown.style.visibility = "visible";
}

答案 1 :(得分:2)

ASP.NET会破坏服务器上运行的元素的名称。您必须找到受损的名称,然后对该名称执行document.getElementById。

或者,您可以使用asp:panel的ClientIDMode属性来关闭修改(http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx