0
我在頁面上有一些複選框。在按下按鈕觸發器後,我在UpdatePanel中使用FindControl()來獲取它們,但是檢查的值是錯誤的。我如何獲得正確的選中值?我的代碼說當複選框沒有被選中時... ASP.NET
我在頁面上有一些複選框。在按下按鈕觸發器後,我在UpdatePanel中使用FindControl()來獲取它們,但是檢查的值是錯誤的。我如何獲得正確的選中值?我的代碼說當複選框沒有被選中時... ASP.NET
如果你有一個設置你的頁面上的複選框的值的任何代碼,確保它不執行回發上,像這樣:
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
的狀態),所以它可能會清除用戶的選擇,然後才能進入檢查複選框值的代碼。
Page init只運行一次,它在!isPostback if語句中。 – NibblyPig 2009-09-23 14:28:05
這是不正確的 - Page_Init每次回發時都會運行。話雖如此,我最初的例子很愚蠢,因爲當發佈的表單值映射回控件時,Page_Init中設置的值將被覆蓋。你有*任何*代碼,在頁面上設置你的複選框的值?您可能必須發佈您的代碼以幫助我們進行調試。您在頁面生命週期的哪個點嘗試閱讀複選框值?複選框是否動態生成? – 2009-09-23 14:50:25
發佈任何代碼都不會真的有幫助...我的研究似乎表明,基本上,直到prerender方法或類似的運行,纔會設置複選框值,並且直到我的觸發器方法後才運行。這是通過單擊按鈕兩次來確認的,這導致它記住點擊了哪些複選框。 我會考慮你的回覆,並再次檢查,以確保沒有重置值,雖然 – NibblyPig 2009-09-23 15:11:59