問題說明:
當我們使用了無接縫傳值撰寫模式,完成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>
2009年4月24日 星期五
2009年4月20日 星期一
一個關於ASP.NET RadioButtonList 控制元件操作上的注意事項
問題說明:
在ASP.NET的環境中操作RadioButtonList 控制元件時,如果在伺服端預設SelectedIndex時;例如設定了SelectedIndex=0,當使用者於網頁上點選第一項以外的選項時,SelectedIndexChanged的事件可以正常運作,但時回點第一項選項時發現無法啟動SelectedIndexChanged的事件。
也就是說在伺服端預設的SelectedIndex後,會導致該選項沒有SelectedIndexChanged的事件。
解決方法:
必須於網頁OnLoad或OnFocus時,使用Javascript定義預設的選項,不能在伺服端預設選項。
下面是我的作法:
window.onfocus = function() {
var ctrl = document.getElementById("<%=RadioButtonList1.ClientID%>" + "_0");
ctrl.checked = true;
};
在ASP.NET的環境中操作RadioButtonList 控制元件時,如果在伺服端預設SelectedIndex時;例如設定了SelectedIndex=0,當使用者於網頁上點選第一項以外的選項時,SelectedIndexChanged的事件可以正常運作,但時回點第一項選項時發現無法啟動SelectedIndexChanged的事件。
也就是說在伺服端預設的SelectedIndex後,會導致該選項沒有SelectedIndexChanged的事件。
解決方法:
必須於網頁OnLoad或OnFocus時,使用Javascript定義預設的選項,不能在伺服端預設選項。
下面是我的作法:
window.onfocus = function() {
var ctrl = document.getElementById("<%=RadioButtonList1.ClientID%>" + "_0");
ctrl.checked = true;
};
訂閱:
文章 (Atom)