问题如题,如果返回的不是查询页面而是一个单纯的列表页面也就容易了网上有好多解决方法都是很不错的,可问题是现在返回要刷新的是一个查询页。不但要记录查询条件还要记录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" />

    第二步:
    页面Page_Load的时候设hdRefresh.Value = "false"并判断是否执行查询。
添加修改后返回刷新查询页面    protected void Page_Load(object sender, EventArgs e)
    
    第三步:
    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>
添加修改后返回刷新查询页面
    第四步:
    B页面里用history.go(-?)返回A页面。
    到这里就算是完成任务了,这个方法有一个不好的地方就是利用history.go返回页面后马上就会再次提交页面所以给人一种页面闪了一下的感觉。

相关文章: