2009-09-23 96 views

回答

2

如果你有一個設置你的頁面上的複選框的值的任何代碼,確保它不執行回發上,像這樣:

protected void Page_Load(object sender, EventArgs e) { 
    // Only set the checkboxes on GETs, not on POSTs 
    if (! this.IsPostBack) { 
     this.EmailMeUpdatesCheckbox.Value = false; 
    } 
} 

操作中UpdatePanels引發仍然經歷頁面的生命週期(這就是爲什麼你可以訪問你所有的Page的狀態),所以它可能會清除用戶的選擇,然後才能進入檢查複選框值的代碼。

+0

Page init只運行一次,它在!isPostback if語句中。 – NibblyPig 2009-09-23 14:28:05

+1

這是不正確的 - Page_Init每次回發時都會運行。話雖如此,我最初的例子很愚蠢,因爲當發佈的表單值映射回控件時,Page_Init中設置的值將被覆蓋。你有*任何*代碼,在頁面上設置你的複選框的值?您可能必須發佈您的代碼以幫助我們進行調試。您在頁面生命週期的哪個點嘗試閱讀複選框值?複選框是否動態生成? – 2009-09-23 14:50:25

+0

發佈任何代碼都不會真的有幫助...我的研究似乎表明,基本上,直到prerender方法或類似的運行,纔會設置複選框值,並且直到我的觸發器方法後才運行。這是通過單擊按鈕兩次來確認的,這導致它記住點擊了哪些複選框。 我會考慮你的回覆,並再次檢查,以確保沒有重置值,雖然 – NibblyPig 2009-09-23 15:11:59

相關問題