保留div在回发时显示

时间:2011-11-08 17:12:05

标签: c# javascript jquery asp.net postback

我有一个Web用户控件,里面有一个div;一些jQuery切换div的可见性。还有一个asp:按钮,用于启动一些服务器端代码。

我需要在回发后恢复div的可见性。

我正在关注this post's解决方案中发布的更新解决方案。这是我的代码:

在ascx的顶部,在寄存器之后:

<script>
function SetHiddenValue()
{        
   var campo = document.getElementById("<% =hidHiddenField.ClientID %>");
   if(campo.Value == "NO")
   {               
      document.getElementById("<% =hidHiddenField.ClientID %>").Value = "SI";  
   }
   else
   {
      document.getElementById("<% =hidHiddenField.ClientID %>").Value = "NO";
   }        
}
</script>

div定义:

<div id="divContenidoMetricas" style='<%= DefinirVisibilidad() %>'>

在同一个网络用户控件中:

<asp:ImageButton runat="server" ImageUrl="~/Themes/Images/buscar.PNG" OnClick="btnFiltrar_Click"
                    ID="btnFiltrar" OnClientClick="SetHiddenValue()" />

在ascx.cs中:

protected string DefinirVisibilidad()
{
   return this.hidHiddenField.Value == "SI" ? "display:block" : "display:none";
} 

这是行不通的。 hidHiddenField.Value始终以相同的值到达服务器代码(DefinirVisibilidad())。

非常感谢您的帮助......我的客户端代码知识受到了ASP.NET的破坏,所以我被卡住了。

解决

我将'Value'替换为'value',这解决了问题。它正在运作!

3 个答案:

答案 0 :(得分:1)

请试试这个:

function SetHiddenValue()
{        
   var campo = document.getElementById("<% =hidHiddenField.ClientID %>");
   var display = document.getElementById("divContenidoMetricas").style.display;

   if(display == "block")
   {               
      campo.value = "SI";  
   }
   else
   {
      campo.value = "NO";
   }        
}

编辑:用“值”替换“值”。

答案 1 :(得分:0)

如何使用jQuery在文档准备就绪时设置它?

$(document).ready(function() {
  var showDiv = <%= DefinirVisibilidad() %>;
  if (showDiv != true) {
    $('#divContenidoMetricas').hide();
  }
});

而不是使用&lt; %%&gt;直接设置样式。块。

答案 2 :(得分:0)

值必须为小写,因此在替换之后可以使用:

   if(campo.value == "NO")
   {               
      document.getElementById("<% =hidHiddenField.ClientID %>").value = "SI";  
   }
   else
   {
      document.getElementById("<% =hidHiddenField.ClientID %>").value = "NO";
   }