2012-02-07 68 views
1

我在UpdatePanel中有兩個控件;一個複選框和一個時間選擇器。如何在沒有完整回傳的情況下舉辦活動?

當我點擊複選框(事件CheckedChanged)時,它應該使timepicker可編輯(ReadOnly = false),反之亦然。我希望事件CheckedChanged在未做完整回發的情況下引發。

有沒有在javascript中做的解決方法?我不知道如何管理UpdatePanel上的觸發器。

謝謝!

(asp.net 4.0,C#)

+1

所以你不想處理事件服務器端,你也不想用Javascript處理它?嗯,我不確定還有其他的選擇。除非我誤解你的問題。 – 2012-02-07 15:28:45

+0

我想處理事件服務器端。我只是不想做一個完整的回發 – Soader03 2012-02-07 15:44:08

回答

2

不幸的是,使用一個UpdatePanel會導致完全回發。所以如果你不想這樣做,你必須使用客戶端JavaScript。

這不是很複雜。找一個能爲你寫JavaScript的人,這不是火箭科學。

+0

我看到...謝謝您 – Soader03 2012-02-07 15:45:19

0

您可以將代碼添加到您的OnInit和的OnLoad跳過執行它們包含通過檢查Request.IsPostback,如果一個特定的控制導致它(回傳)的代碼; e.g:

<asp:CheckBox runat="server" ID="MyCheckbox" AutoPostBack="true" /> 


if(this.Request.IsPostback && this.Request.Form["__EVENTTARGET"] == this.MyCheckbox.ID) 
{ 
    return; 
} 

因爲我沒有測試這一點,如果您的複選框被嵌套在其他控制,這會導致它的客戶端ID和的UniqueID是前置父控件的ID值,然後測試高於2層的性質。此外,您可以將該條件更改爲相反的,顯然,這樣您可以將完整的主體代碼包裝在該IF塊中(如果這是您喜歡的,或者如果您不喜歡一種方法中的多個返回語句)。

我希望我理解得很好 - 這樣可以節省一些處理;但是,它可能有負面影響(例如,如果你有一些代碼添加控件來控制樹動態,在服務器上的init/load方法之內,那麼你想那些總是執行,即使在這種情況下,否則,這些控件的視圖狀態將失效)。

相關問題