从另一个页面调用事件

时间:2015-04-03 15:06:36

标签: c# asp.net design-patterns

我有2页:PageListAnimals和PageEditAnimal。

在PageListAnimals中,有一个包含动物信息的网格视图。我可以点击每个动物打开PageEditAnimal:在新窗口中打开另一个页面。

当我完成编辑动物信息时,我想保存并关闭窗口PageEditAnimal,之后,将刷新其他窗口PageListAnimals,或更新内部的网格视图。

我知道javascript中存在解决方案,但我想在服务器端实现它。

我认为可能有类似Observer模式的东西。当PageEditAnimal关闭时,会通知PageListAnimals更新自己。

请给我一些帮助以解决这个问题的线索。

编辑 - 已解决:

解决方案是从孩子那里调用父级的刷新,但我只是设法在javascript中执行此操作:

 window.onbeforeunload = function () {
      window.opener.refresh();
 }

然后在父级中,javascript函数方法()必须更新里面的gridview。

2 个答案:

答案 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时都会调用此代码,因此请谨慎使用。