2009-11-24 32 views
0

我在UpdateTemplate中有一個Gridview。我在四個不同的列中有四個模板字段。每個TemplateField都有一個帶有控件的UpdatePanel。所有的列都是可排序的,並且Gridview是可以頁面化的。其中三個模板字段在UpdatePanel中具有DropDowns,一個具有文本框,所有這些控件都具有AutoPostBack = True。所有的UpdatePanel都有UpdateMode = Conditional和ChildrenAsTriggers = false。Double postback導致SelectedIndexChanged引發火災AutoPostback

當我單擊排序或更改頁面索引時,結果沒有返回,並且在繁忙時重新執行(單擊排序或頁面索引),在某些控件上觸發SelectedIndexChanged和TextChanged事件。

看來,這取決於我什麼時候這樣做一些結果已被刷新,並有事件不會觸發,但有些仍然很忙,第二次回發暫停第一次,並認爲價值已經改變,並引發火災有相應的AutoPostBackt事件。當所有事件觸發網格時,將顯示第一次排序或頁面索引更改期望的預期結果集。

回答

1

這裏有問題嗎?

您可以做的一件事是在等待第一個Ajax調用時添加一個「忙碌」顯示並禁用會導致另一個回發的控件。請記住AJAX中第一個A的立場:異步。

+0

首先這是一個問題。接下來,我禁用了TemplateFields中的控件,但當單擊Column標題或更改頁面索引時,Disabled控件的AutoPostBack會觸發相關事件。我的問題是「爲什麼這些事件不應該發生,我該如何解決?」 –

1

沒有和你一樣的複雜程度,就嵌套控件等而言,我最近有一個類似的問題:Why do unrelated (autopostback) methods get called when an Asp.Net ListBox autopostback method is invoked?,我認爲這可能與你的問題有關。

我的問題特別是與ListBox autopostback方法,而且不應該被調用的方法實際上是被調用,而不得不做的列表框的SelectedIndex真正改變,出乎我的意料,因此事實發射回發,這可以通過設置那些列表框'SelectedIndex爲0解決,解釋在我原來的問題的幾個答案。

與您的問題完全不一樣,我認爲我的鏈接問題可能具有相同的原因。

相關問題