2011-11-08 76 views
1

我有一个web用户控件和一个div在里面;一些jQuery切换div的可见性。还有一个启动一些服务器端代码的asp:按钮。让div在回发中显示

我需要在回发后恢复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() %>'> 

在同一个web用户控件:

<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的破坏,所以我被卡住了。

解决

我取代“价值”与“价值”和解决的问题。它正在工作!

+0

如果使用ASP.NET AJAX,你可以使用[AlwaysVisibleControl延长器(http://www.asp.net/ajaxlibrary/ AjaxControlToolkitSampleSite/AlwaysVisibleControl/AlwaysVisibleControl.aspx)。 –

+0

你确定你的'SetHiddenValue'函数?如果它的当前值是“NO”,那么它将“SI”放在隐藏字段中,并且在所有其他情况下“否”......我不明白。 – Rodolphe

+0

@Rodolphe,它像campo.Value =!campo.Value ...因为隐藏的值是字符串而不是布尔值,所以我这样做了。 (SI = YES,NO = NO) – daniloquio

回答

0

值必须是小写,所以更换后的工作:

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

如何使用jQuery将其设置为文档准备就绪?

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

而不是直接使用<%%>块设置样式。

+0

从我理解的问题是服务器端。 – Rodolphe

+0

是的,我的错误。抱歉。应该仔细阅读。 – Balthy

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

编辑:取代 “价值” 与 “价值”。

+0

感谢您的回答;对不起,告诉你它不起作用。 – daniloquio