无法使用javascript显示asp面板

时间:2014-01-22 20:14:26

标签: 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><asp:Textbox id ="txtstudent" runat"server"></td>

 <asp:panel>

字段集中还有更多的文本框和下拉列表,为了降低复杂性,我没有放入整个代码。我有这个aspx页面,它有3种模式(选择,更新,插入)。在选择模式下,aspx页面不应显示面板。默认情况下,asp面板是可见的。我在其中一个驱动选择模式的代码中的函数中使其不可见,如下所示。在这种模式下,所有控件都是只读的。

enter code here

function selectvalues ()
{
panele.Visible=False; /*code behind */
}

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

 <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;
}

当我选择出生日期时,不显示面板。我不知道什么是错的。我真的很感激你的帮助。

enter code here

4 个答案:

答案 0 :(得分:1)

Visible=False的控件不会呈现为HTML的一部分。尝试在后面的代码中隐藏并显示这样的CSS:

 panele.CssClass= "myHidePnlclass";

或我认为适合您当前的代码:

panele.Style["display"] = "none";

答案 1 :(得分:0)

当你从后面的代码中将asp:Control Visible Property设置为false时。浏览器不呈现该元素,因此无法从客户端(jquery,javascript)显示该元素。

将其隐藏在替换后面的代码中:

panele.Visible=False;

使用

panele.Attributes.Add("style", "display:none");

答案 2 :(得分:0)

我发现标签存在问题。面板呈现为div,我已经应用了可见隐藏的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 element

   <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之前已经结束,因为div在fieldset之前结束(我认为开始和结束标签没有正确组织,不知道为什么)。我认为这就是面板内的字段集未被隐藏的原因。 Panel是隐藏的,当fieldset未隐藏时,输出显示在浏览器中,我误解了该面板未被隐藏。

答案 3 :(得分:-1)

使用

 ClientIDMode="Static"

在asp面板上,然后在JavaScript中:

 function selectvalues ()
 {
     if(YOUR CONDITION){
         $('#panele').hide();
     }
 }