2009年4月24日 星期五

ASP.NET無接縫傳值頁面處理後續-如何重新整理來源頁面?

問題說明:
 當我們使用了無接縫傳值撰寫模式,完成Master/Detail的編修資料後,大部份的情況都需要重新整理來源頁的頁面,才能立即顯示修正後的資料。在這種情況下要如何處理?
可能方法包含:
1.使用window.opener.location.reload();
2.呼叫來源頁的重整功能。
這兩個方法中,window.opener.location.reload();會產生是否要重整的確認視窗,而且整個網頁重新進入一次,使用上比較不經濟。第二個方法可以配合AJAX把握重點,只整理需要的頁面。
個人習慣使用第二種方法。

我的作法:
 1.在來源頁上配置一個ImageButton的Control。語法如下:
 <asp:imagebutton id="refreshBU" alternatetext="頁面重整" imageurl="~/Images/refresh.png" oncommand="refreshBU_Command" runat="server">
 2.加入一個doRefresh()的javascript function(),語法如下:
 function doRefresh() { doClickId("<%=refreshBU.ClientID %>"); }
 doClickId()在ASP.NET無接縫傳值撰寫模式中已建立。
 3.撰寫refreshBU_Command事件處理機制,可能是重新Binding GridView。
 4.彈出的頁面中加入編修或處理結束後來源頁的功能呼叫。語法如下:
 <script type="text/javascript">
 function confirmSave(){
 alert('回應資料已存檔,頁面即將關閉!');
 window.opener.doRefresh();
 window.open('', '_parent', '');
 window.close();
 }
 </script>