我有一个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',这解决了问题。它正在运作!
答案 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";
}