我有页面Searchbook.aspx有3个下拉菜单和一个转发器控件当我通过该按钮导航到另一个页面到另一个页面时有按钮。当我点击浏览器第一页的后退按钮获取默认值而不是搜索值。我想恢复搜索的值。
答案 0 :(得分:0)
您可以通过在EnableHistory=true
中设置切换ScriptManager
来打开浏览器的历史记录以获取更新面板请求。
以下是可能有帮助的代码示例......
<asp:ScriptManager ID="scm" runat="server"
EnableHistory="true"
OnNavigate="scm_Navigate"
/>
<div>
<asp:Button ID="btnSubmit" runat="server" Text="Click Me!"
onclick="btnSubmit_Click" />
<asp:UpdatePanel ID="upl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lblTime" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<强>更新强> 您还可以使用此方法在浏览器中添加历史记录点。 http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.addhistorypoint(v=vs.100).aspx
也许这个关于SOF的答案也可以帮助...... https://stackoverflow.com/a/365746/217757
更新2 这篇来自Scott Gu的博客文章总结了一切...... http://weblogs.asp.net/scottgu/Tip_2F00_Trick_3A00_-Enabling-Back_2F00_Forward_2D00_Button-Support-for-ASP.NET-AJAX-UpdatePanel
答案 1 :(得分:0)
如果要在浏览器后退按钮上恢复搜索值,则有两种方法可以解决。
保持用户在ViewState中选择的过滤器值。 =&GT;在这种情况下,始终通过实现从viewstate获取的条件来绑定数据。
或者在查询字符串中保留过滤器数据的值。 =&GT;在这种情况下,当用户选择过滤条件时,将值放入查询字符串中并通过将条件与从URL查询字符串中获取的值绑定来绑定数据。
上述两个过程都可以解决您的目的,但第二个过程可以高效快速,因为在Viewstate中放置值会减慢页面速度。
如果我无法正确处理您的问题,请告诉我。
更新 - 您可以使用Viewstate方法,因为您正在使用更新面板并使用查询字符串make page refresh。
Viewstate与使用Session变量相同,请参阅下面的代码。
在viewstate中添加值
ViewState.Add(&#34; filter1&#34;,DropDownList1.SelectedValue);
从viewstate获取价值
string getvalue = ViewState [&#34; filter1&#34;]。ToString();
因此,当在viewstate中单击提交按钮设置值并在页面加载时选择过滤条件后,获取相同的值并使用这些值绑定您的控件。