470 likes | 578 Views
ASP.NET AJAX 1.0 開發與實作秘訣. 主講人:章立民. 章立民研究室 繁體部落格 - http://blog.xuite.net/alwaysfuturevision/liminzhang. 主講人 章立民簡介. 章立民研究室技術總監。 臺灣微軟公司資深顧問講師。從 1992 年開始。 資深電腦圖書作家。擁有 60 本以上的著作。 經濟部資訊專業人員鑑定計畫命(審)題委員。 電腦技能基金會資料庫應用類命題委員。 職訓局 Visual Basic 能力本位教材編撰委員。 … 等等. 議程.
E N D
ASP.NET AJAX 1.0開發與實作秘訣 主講人:章立民 章立民研究室繁體部落格- http://blog.xuite.net/alwaysfuturevision/liminzhang
主講人 章立民簡介 • 章立民研究室技術總監。 • 臺灣微軟公司資深顧問講師。從 1992 年開始。 • 資深電腦圖書作家。擁有 60 本以上的著作。 • 經濟部資訊專業人員鑑定計畫命(審)題委員。 • 電腦技能基金會資料庫應用類命題委員。 • 職訓局 Visual Basic 能力本位教材編撰委員。 • …等等
議程 • 快速晉升非同步之鑰-ScriptManager • 局部更新、盡其在我-UpdatePanel • 悠游於非同步之間-PageRequestManager • 別讓使用者乾著急-UpdateProgress • 定時作業的最佳利器-Timer • 外部資源的非同步整合-用戶端呼叫 Web 服務實作 • JavaScript換新裝,注入 OOP新靈魂 • 縫製新裝為自己、量身打造才有趣-Extender與 Behavior
UpdatePanel 控制項 • 指定非同步局部更新的範圍 多少個? 多少個?
UpdatePanel 控制項 1、AsyncPostBackTrigger觸發器 2、ScriptManager1.RegisterAsyncPostBackControl(control) 至於位於 UpdatePanel 控制項外部的回傳按鈕呢? GridView 控制項自動成為一個非同步回傳控制項
UpdatePanel 控制項使用秘訣一 固定更新(UpdateMode = Always) vs 條件式更新(UpdateMode = Conditional)
UpdatePanel 控制項使用秘訣二 • 基於效能考量,只讓外觀或資料內容確實有所改變的控制項才擺放在 UpdatePanel 控制項中。 • 外觀沒有改變的非同步回傳控制項也不應擺在 UpdatePanel控制項中。
UpdatePanel 控制項使用秘訣三 • 基於效能考量,請適時將 ChildrenAsTriggers 屬性設定成 False。
UpdatePanel 控制項使用秘訣四 • 有效自訂觸發器,局部更新時機由你訂
UpdatePanel 控制項使用秘訣五 • 善用 Update方法彌補觸發器不足之處…
UpdatePanel 控制項使用秘訣六 • 善用巢狀化,效能更進化…
UpdatePanel 控制項使用秘訣七 • 並非所有的 ASP.NET 2.0 控制項都相容於 UpdatePanel 控制項。 • 何謂相容? • 可以在 UpdatePanel 控制項中使用 FileUpLoad 控制項嗎? • FileUpLoad 控制項不相容於局部更新機制。 • 使用觸發器類型 PostBackTrigger。
Timer 控制項 • 伺服器控制項 • 定時引發全網頁回傳或非同步回傳
Timer 控制項 • 使用模式: • 單一個 Timer 控制項搭配一或多個 UpdatePanel控制項。 • 多個 Timer 控制項搭配多個 UpdatePanel控制項。 • Timer控制項的擺放位置與其影響。 • 請在確實需要的時候,才使用 Timer 控制項來定時更新網頁上的內容。
UpdateProgress 控制項 • 顯示提示資訊來告知使用者作業還在進行中。
PageRequestManager 類別 • 管理網頁上一或多個 UpdatePanel控制項的非同步局部更新作業。 • 透過 JavaScript來完成下列自訂作業: • 於網頁上顯示訊息來告知使用者目前正在進行非同步局部更新。 • 取消某一項非同步回傳作業。 • 讓某一項非同步回傳作業擁有較高的優先權。 • 自訂局部更新的錯誤處理。
PageRequestManager 類別 • 藉由替 PageRequestManager 的各個事件撰寫事件處理常式,您可以充分自訂網頁的非同步局部更新作業。
JavaScript 換新裝,注入 OOP 新靈魂 • 類別(Classes) • 命名空間(Namespaces) • 繼承(Inheritance) • 介面(Interfaces) • 列舉(Enumerations) • 反映(Reflection)
具體擴充 JavaScript 基底型別 • Array 型別擴充 • Boolean 型別擴充 • Date 型別擴充 • Error 型別擴充 • Number 型別擴充 • Object 型別擴充 • String 型別擴充
ASP.NET AJAX 外部資源的非同步整合-用戶端 JavaScript 呼叫 Web 服務實作 • 內建的非同步機制,不需要自行實作 XMLHTTP 物件。 • 使用 JSON(JavaScript Object Notation )作為用戶端與伺服器端的資料交換格式: • 提供完整的序列化與還原序列化機制 • [ScriptMethod(ResponseFormat.Xml)] • 允許傳遞與接收複雜型別(類別物件)。 • 允許傳遞 DataSet、DataTable 與 DataRow 物件。 • 允許直接呼叫靜態網頁方法(Page Method)。 • 清晰、明確且簡易的開發邏輯。
JavaScript 非同步呼叫 Web 服務三步驟 將 Web 服務公開給 JavaScript
JavaScript 非同步呼叫 Web 服務三步驟 於網頁中註冊 JavaScript 所要呼叫的 Web 服務 產生 JavaScript Proxy 類別
JavaScript 非同步呼叫 Web 服務三步驟 撰寫 JavaScript 呼叫遠端 Web 服務
JavaScript 如何取得並剖析 Web 服務所傳回的 DataSet、DatTable與 DataRow 資料物件 • 務必於 Web.config 中啟用相關的 Converter 設定 :
JavaScript 如何取得並剖析 Web 服務所傳回的 DataSet、DatTable與 DataRow 資料物件
縫製新裝為自己、量身打造才有趣 • Behavior • Client Control • Extender • [Projectname]Behavior.js • [Projectname]Designer.vb(或 .cs) • [Projectname]Extender.vb(或 .cs)
再會 • 參考資料 • ASP.NET AJAX 1.0 非同步網頁開發秘訣 – 範例大全集(即將出版) • ASP.NET AJAX Document • 範例製作 • 章立民研究室