问题如题,如果返回的不是查询页面而是一个单纯的列表页面也就容易了网上有好多解决方法都是很不错的,可问题是现在返回要刷新的是一个查询页。不但要记录查询条件还要记录GridView的当前页。(下面A为查询页,B为修改页)
试过很多方法,比如在地址栏里传参数、Session里存放参数、禁用缓存、Server.Transfer()传参、弹出也面等都不能实现全部功能。最后想到了下面的办法虽不是很完美但实现了所要求的功能。
第一步:
在A页面添加一个HidenField设ID为hdRefresh,用来记录页面是否需要重新提交。
再添加一个HidenField设ID为hdCurrentPage,用来记录查询的时候是否需要记录GridView的当前页。
在page的onload事件里调用Refresh()方法,代码如下:
<asp:HiddenField ID="hdRefresh" runat="server" Value="false" />
<asp:HiddenField ID="hdCurrentPage" runat="server" Value="false" />
<script language="javascript" type="text/javascript">
function Refresh()
{
var hdRefresh = document.getElementById("hdRefresh");
var hdCurrentPage = document.getElementById("hdCurrentPage");
if(hdRefresh.value == "false")
{
hdRefresh.value = "true";
}
else
{
//window.location.reload();
hdCurrentPage.value = "true";
document.form1.submit();
}
}
</script>
第二步:
页面Page_Load的时候设hdRefresh.Value = "false"并判断是否执行查询。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Query();
}
if (hdCurrentPage.Value == "true")
{
Query(GvPageSet1.CurrentInfo);
hdCurrentPage.Value = "false";
}
hdRefresh.Value = "false";
}
第三步:
A页面GridView中的编辑和添加HypeLink不能使用GridView本身的OnRowEditing和OnRowDeleting要写成如下形式否则用submit()提交页面的时候会出问题的。
B页面里用history.go(-?)返回A页面。
到这里就算是完成任务了,这个方法有一个不好的地方就是利用history.go返回页面后马上就会再次提交页面所以给人一种页面闪了一下的感觉。
试过很多方法,比如在地址栏里传参数、Session里存放参数、禁用缓存、Server.Transfer()传参、弹出也面等都不能实现全部功能。最后想到了下面的办法虽不是很完美但实现了所要求的功能。
第一步:
在A页面添加一个HidenField设ID为hdRefresh,用来记录页面是否需要重新提交。
再添加一个HidenField设ID为hdCurrentPage,用来记录查询的时候是否需要记录GridView的当前页。
在page的onload事件里调用Refresh()方法,代码如下:
<asp:HiddenField ID="hdRefresh" runat="server" Value="false" />
<asp:HiddenField ID="hdCurrentPage" runat="server" Value="false" />
<script language="javascript" type="text/javascript">
function Refresh()
{
var hdRefresh = document.getElementById("hdRefresh");
var hdCurrentPage = document.getElementById("hdCurrentPage");
if(hdRefresh.value == "false")
{
hdRefresh.value = "true";
}
else
{
//window.location.reload();
hdCurrentPage.value = "true";
document.form1.submit();
}
}
</script>
第二步:
页面Page_Load的时候设hdRefresh.Value = "false"并判断是否执行查询。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Query();
}
if (hdCurrentPage.Value == "true")
{
Query(GvPageSet1.CurrentInfo);
hdCurrentPage.Value = "false";
}
hdRefresh.Value = "false";
}
第三步:
A页面GridView中的编辑和添加HypeLink不能使用GridView本身的OnRowEditing和OnRowDeleting要写成如下形式否则用submit()提交页面的时候会出问题的。
<asp:TemplateField ShowHeader="False" Visible="true">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "BillEdit.aspx?ID="+Eval("ID") %>' DataNavigateUrlFields="ID" Text="编辑" Target="_self"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>

第四步:
<ItemTemplate><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "BillEdit.aspx?ID="+Eval("ID") %>' DataNavigateUrlFields="ID" Text="编辑" Target="_self"></asp:HyperLink>
</ItemTemplate></asp:TemplateField>

B页面里用history.go(-?)返回A页面。
到这里就算是完成任务了,这个方法有一个不好的地方就是利用history.go返回页面后马上就会再次提交页面所以给人一种页面闪了一下的感觉。


浙公网安备 33010602011771号