2011-06-21 125 views
0

我在更新面板中有一箇中繼器。中繼器的內容每5秒刷新一次。 (AsyncPostBackTrigger綁定到計時器的滴答事件)OnCheckChanged多次觸發複選框中的CheckBox中的複選框

在中繼器的每個項目中都有一個autopostback設置爲true的複選框。 我希望每個複選框的狀態在轉發器每次刷新後都保留,這就是爲什麼我將它保存在Page.Session中的狀態。然後在tick事件處理程序中,我將複選框的Checked值設置爲會話中的值。不幸的是,這似乎觸發了OnCheckedChanged事件,因此我不知道哪個事件處理程序調用來自用戶交互,哪些來自代碼。

有人知道爲什麼OnCheckChanged被觸發不止一次,我怎樣才能防止額外的發生?有沒有辦法阻止AsyncPostBackTrigger觸發複選框的OnCheckedChanged事件?

回答

1

您可以通過檢查Page.Request.Params.Get("__EVENTTARGET")來找出哪個控件導致回發,它返回控件的ID。然而...

我不會確定沒有閱讀您的代碼,但您不需要擔心跟蹤選中的複選框,選中的狀態應該保存在視圖狀態(除非您將其關閉...)因此,如果情況並非如此,那麼您的頁面可能會出現其他問題。

+0

我想我應該閱讀一下關於viewstate,我沒有故意關閉它,但不知道它是否打開或關閉......仍然真的是asp.net中的新手。 – Greg

+0

我猜view state將不會像每次刷新轉發器一樣被保留,數據綁定再次發生,因此轉發器項目和它們的控件會一遍又一遍地創建... – Greg

+0

爲什麼每次重新綁定數據?只嘗試初始頁面加載時的數據綁定,而不是每個異步回發。 – Peter