我有一个div和4个下拉控件。
使用Style="display:none"隐藏默认div。
第一次跌落没有自动倒车事件。
Div的显示属性在第一次下拉式的很少值上被改变。一旦它可见。用户可以在下拉字段2/3/4中更改值,该字段具有自动回发真。
当用户更改任何2-5下拉控件中的值时,回发触发器并将该Div的display属性设置为Style="display:none"。
如何保留div的显示属性。
这在.aspx页面上
发布于 2016-02-15 14:38:52
样式不是包含在PostBack中的数据的一部分。为了包含它们,您可以在页面上创建一个隐藏字段,每当客户端代码更改div的可见性时,也可以设置该字段。
<asp:HiddenField ID="hidden" runat="server" />当PostBack到达服务器时,计算隐藏字段的Value属性,并在div上设置样式,使其与存储在隐藏字段中的状态匹配。为了能够在div上更改.NET代码中的样式,需要确保指定了runat="server":
<div ID="myDiv" runat="server">
<!-- ... -->
</div>示例
下面的示例演示如何使用隐藏字段将可见性传输到服务器并在客户端上还原。在ASPX中,有div,用于存储可见性的隐藏字段,以及设置div的可见性和隐藏字段的值的脚本:
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div id="myDiv" runat="server" style="display:none;">
Div is visible
</div>
<asp:HiddenField ID="myHidden" runat="server" />
<input type="button" value="Toggle visiblity" onclick="javascript:toggleDiv()" />
<asp:Button ID="btn" runat="server" Text="Postback" />
<script type="text/javascript">
function toggleDiv()
{
$(myDivId).toggle();
$(myHiddenId).val($(myDivId).css('display'));
}
</script>
</asp:Content>需要注意的是,div和隐藏字段获得特殊的ASP.NET客户端is,这些is不一定与ASPX文件中的标记is匹配。因此,我注册了一个使用ids (myDivId和myHiddenId)定义变量的启动脚本:
protected void Page_Load(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(GetType(), "DivId",
"var myDivId = '#" + myDiv.ClientID + "';" + Environment.NewLine +
"var myHiddenId = '#" + myHidden.ClientID + "';",
true);
}当发生回发时,隐藏字段的值将传输到服务器,并可使用。我定义了一个PreRender事件处理程序,它恢复了div的可见性
protected void Page_PreRender(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(myHidden.Value))
myDiv.Style[HtmlTextWriterStyle.Display] = "none";
else
myDiv.Style[HtmlTextWriterStyle.Display] = myHidden.Value;
}https://stackoverflow.com/questions/35411961
复制相似问题