我有2页:PageListAnimals和PageEditAnimal。
在PageListAnimals中,有一个包含动物信息的网格视图。我可以点击每个动物打开PageEditAnimal:在新窗口中打开另一个页面。
当我完成编辑动物信息时,我想保存并关闭窗口PageEditAnimal,之后,将刷新其他窗口PageListAnimals,或更新内部的网格视图。
我知道javascript中存在解决方案,但我想在服务器端实现它。
我认为可能有类似Observer模式的东西。当PageEditAnimal关闭时,会通知PageListAnimals更新自己。
请给我一些帮助以解决这个问题的线索。
编辑 - 已解决:
解决方案是从孩子那里调用父级的刷新,但我只是设法在javascript中执行此操作:
window.onbeforeunload = function () {
window.opener.refresh();
}
然后在父级中,javascript函数方法()必须更新里面的gridview。
答案 0 :(得分:0)
为什么需要打开另一个页面来进行编辑?
而是在同一页面中打开,编辑完成后,重定向到 PageListAnimals 页面。
Response.Redirect("PageListAnimals.aspx");
如果您坚持要打开 PageListAnimals ,那么我认为唯一的方法是使用javascript。只需创建一个包含GridView.Databind()
方法的服务器端函数的调用。
答案 1 :(得分:0)
你可以这样做:
在页面的头部添加此脚本
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(window).focus(function () {
document.getElementById('<%= Button3.ClientID %>').click();
});
</script>
添加此按钮,以调用后面应该更新GridView的代码
<asp:Button ID="Button3" style="display:none"; runat="server" Text="Button" onclick="Button3_Click" />
后面的代码应该是这样的:
protected void Button3_Click(object sender, EventArgs e)
{
//This is how your data should be bind in GridView
GridView1.DataBind(); //GridView1 -> name whatever your gridview is named
}
<强>注意强>
每当您转到页面PageListAnimals
时都会调用此代码,因此请谨慎使用。