2015-04-03 154 views
0

我有2頁:PageListAnimals和PageEditAnimal。從另一頁呼叫事件

在PageListAnimals中,有一個帶有動物信息的gridview。我可以點擊每個動物來打開PageEditAnimal:在新窗口中打開另一個頁面。

當我完成編輯動物信息時,我想保存並關閉窗口PageEditAnimal,之後,其他窗口PageListAnimals將被刷新,或者更新網格視圖。

我知道JavaScript中存在解決方案,但我想實現它在服務器端。

我認爲可能有像Observer模式這樣的東西。當PageEditAnimal被關閉時,通知PageListAnimals更新自己。

請給我一些線索或幫助解決這個問題。

編輯 - 已解決:

解決的辦法是打電話從孩子家長的刷新,但我只是設法做到這一點在JavaScript:

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

然後在父, javascript函數方法()必須更新裏面的gridview。

+0

Ajax是處理這個問題的最佳方法。另一個解決方案是在彈出窗口的關閉事件中刷新javascript中的瀏覽器。因爲事件發生在客戶端,所以你必須啓動客戶端。 – paqogomez 2015-04-03 15:10:31

+0

你也可以強制父母從孩子內部刷新,但是又一次。的JavaScript。 – paqogomez 2015-04-03 15:17:49

+0

有沒有你的項目是「Web應用程序」或「網站」??? – Keval 2015-04-03 15:23:31

回答

0

爲什麼你需要打開另一個頁面做編輯?

反而在同一頁面中打開,並且在編輯完成後,重定向到PageListAnimals頁面。

Response.Redirect("PageListAnimals.aspx"); 

如果硬要保持PageListAnimals開放的,那麼我認爲這樣做是與JavaScript的唯一途徑。只需創建一個對包含GridView.Databind()方法的服務器端函數的調用即可。

+0

這是這樣的,我不能改變它。 PageEditAnimal必須成爲新窗口 – dramixx 2015-04-08 09:22:29

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頁面後,此代碼調用,因此仔細使用它。

+0

當PageListAnimals集中時,將調用此代碼。我只是希望在關閉其他窗口PageEditAnimal時更新她:/ – dramixx 2015-04-08 09:21:28

+0

是的,但是如果您轉到該頁面,則只能看到數據,如果這樣做,頁面將會有新數據。如果你不看它們,你不會刷新數據。 – Endri 2015-04-08 10:35:08