2011-10-07 54 views
0

我有我的asp.net頁面上有兩個單選按鈕之前,用AutoPostBack = True
當我點擊任一者,他們每設置一個標誌SaveData=False在asp.net,Page_Load中發生的歷史單選按鈕OnCheckedChanged事件

然而,當我點擊它們時,page_load事件首先發生,所以page_load事件保存數據,然後radiobutton_OnCheckedChanged事件被觸發。

如何在page_load事件之前觸發OnCheckedChanged事件?

+0

它不可能實現。但對於標誌設置,您可以使用viewstate或session在onCheckedChanged事件中設置值,並在需要的地方使用它。 –

回答

1

因爲這是正常的頁面生命週期,所以在radiobutton_OnCheckedChanged之前不能觸發OnCheckedChanged

如果Page.IsPostBack爲true或不存在,則可以檢入Page_Load,然後不保存(或保存)數據。

+0

好吧,有一個應該保存數據的按鈕,所以如果不是ispostback理論不會工作。 – Troy

+1

@Troy,它會工作;這是否是最好的方式是一個單獨的討論。底線是ASP.NET不是WinForms。 Page_Load事件將始終在單選按鈕上的OnCheckChanged之前觸發。您可以通過檢查IsPostBack和radioButton.Checked == true來防止保存數據。 – Icarus

0

在觸發事件之前,您無法始終加載該頁面。這與控件創建,查看狀態管理,控制狀態等做

要在Page_Load做的是一樣的東西:

if(!this.IsPostBack) 
{ 
    // Do the stuff you want on the initial page load 
} 

任何你希望發生單擊單選按鈕時,將其放在if {}塊內。 IsPostBack表示該頁面正在處理回發事件,這是您單擊某個單選按鈕時發生的情況。

1

特洛伊 - 你必須在客戶端(javascript/jquery)處理這件事。 Your AutoPostBack = True將導致表單執行回調,調用頁面加載。它關於頁面生命週期和服務器端事件如何工作的全部內容。

0

can't change事件處理程序執行的order/sequence。但是,您可以將page_load內的代碼移動到另一個event handler

相關問題