首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 高效能開發實戰:樹狀列表動態載入與 XSLT 客戶端轉換機制(中)

     編輯:關於C語言

動態載入子節點的完整流程

當使用者展開節點觸發動態載入時,客戶端腳本將節點的 XMLSource 寫入暫存 XML 資料島 SkyTreeViewControlTempXML 的 src 屬性。IE 瀏覽器即刻啟動非同步 XML 載入,並在 onreadystatechange 事件中多次呼叫 SkyTreeViewControlDynamicLoadChildNodes 函數。

載入完成後的處理邏輯

  1. 檢查 XML 資料島 readyState == 'complete',否則返回等待下次觸發。
  2. 取得父節點文字元素與內嵌的 XSLT 資料島 SkyTreeViewControlXSLT。
  3. 呼叫 XML 文件的 transformNode(xsl.XMLDocument) 執行 XSLT 轉換,產生子節點 HTML 字串。
  4. 使用 insertAdjacentHTML 將 HTML 插入頁面對應位置。
  5. 更新父節點圖示為展開狀態,完成動態載入閉環。

第二段 HTML 代碼塊:XSLT 模板與初始化腳本

控件透過 RegisterStartupScript 輸出共享的 XSLT 模板與初始化函數:

<xml id='SkyTreeViewControlXSLT'>{XSLT內容}</xml>
<script language=JavaScript>
function RefreshSkyTreeViewControl(id) {
  var xml = document.getElementById(id + '_xml');
  var xsl = document.getElementById('SkyTreeViewControlXSLT');
  var container = document.getElementById(id + '_container');
  if (!container) { alert('未找到目標'); return; }
  if (!xml) { container.innerText = '缺失XML資料'; return; }
  if (!xsl) { container.innerText = '缺失XSLT資料'; return; }
  var html = xml.XMLDocument.transformNode(xsl.XMLDocument);
  container.innerHTML = html;
}
</script>

此設計將 XSLT 模板內嵌於頁面,避免額外請求;transformNode 為 IE 原生方法,執行效率遠高於 JavaScript 字串拼接,是客戶端渲染高效能的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved