1.如何攔截非同步錯誤訊息?


ScriptManager的AsyncPostBackError事件可以攔截錯誤訊息
在AsyncPostBackError事件裡, e.string() 就是攔截的錯誤訊息
ScriptManager1.AsyncPostBackErrorMessage 可以將錯誤訊息輸出


範例:
Protected Sub ScriptManager1_AsyncPostBackError(ByVal sender As Object, ByVal e As System.Web.UI.AsyncPostBackErrorEventArgs) Handles ScriptManager1.AsyncPostBackError
  ScriptManager1.AsyncPostBackErrorMessage = e.ToString
End Sub




2.如何從UpdatePanel更新區域之外的控制項觸發Update更新?


在UpdatePanel 的<Triggers>裡設定<asp:AsyncPostBackTrigger ControlID="" EventName="" />
設定的ControlID所指定的控制項的EventName指定的事件會與UpdatePanel建立關聯
就可以從UpdatePanel更新區域之外的控制項處發Update更新


3.如何設定UpdatePanel更新區域之內的控制項為刷新整個頁面?


在UpdatePanel 的<Triggers>裡設定<asp:PostBackTrigger ControlID="" />
ControlID指定的控制項會刷新整個頁面


4.當頁面上有許多UpdatePanel時,如何更新指定的UpdatePanel?


UpdatePanel預設的UpdateMode為Always,就是頁面上只要有UpdatePanel更新就會隨著更新
如果只想要某個UpdatePanel更新,須把UpdateMode設定為Conditional
有兩個方式可以指定
(1)在UpdatePanel 的<Triggers>裡設定<asp:AsyncPostBackTrigger ControlID="" EventName="" />
(2)在控制項事件裡下 UpdatePanel1.Update() 指令(UpdatePanel1為指定要更新的UpdatePanel)


5.當UpdatePanel裡有許多控制項觸發事件時,如何指定哪個要觸發非同步更新哪個不要觸發非同步更新?


在UpdatePanel裡有一個ChildrenAsTriggers屬性設成true時(預設為True),則在UpdatePanel裡的所有觸發事件
會以非同步回傳更新UpdatePanel內的內容,但若設成False也會引發非同步回傳,但不會更新UpdatePanel內的內容
而且只有UpdateMode設定為Conditional時,ChildrenAsTriggers屬性設成False才有作用。
所以當UpdatePanel裡有許多控制項處發事件時,要指定哪個要觸發更新哪個不要觸發更新

需要三個步驟:
(1)ChildrenAsTriggers屬性設成False
(2)UpdateMode設定為Conditional
(3)<Triggers>裡設定<asp:AsyncPostBackTrigger ControlID="" EventName="" /> 指定哪幾個要觸發非同步更新


6.哪些控制項不相容於UpdatePanel?


(1)TreeView與Menu
(2)Web Parts
(3)FileUpload
(4)EnableSortingAndPagingCallbacks為True 的GridView與DetailView。
(5)沒轉換成templet的登入控制項
(6)驗證控制項


7.如何用程式控制UpdatePanel觸發非同步更新行為?


(1)首先需要在Page_Load事件裡註冊控制項為非同步更新的控制項
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  ScriptManager1.RegisterAsyncPostBackControl(btnUpdate)
End Sub
(2)UpdateMode設定為Conditional
(3)在控制項的事件中呼叫UpdatePanel1.Update() 指定要更新的UpdatePanel要發生非同步更新行為

nelman 發表在 痞客邦 PIXNET 留言(0) 人氣()