试过很多方法,比如在地址栏里传参数、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 >
< 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";
}
{
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返回页面后马上就会再次提交页面所以给人一种页面闪了一下的感觉。