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

C# 高效能開發實戰:樹狀列表控件節點序列化與動態載入邏輯(中)

     編輯:關於C語言

節點集合 XML 序列化

控件在記憶體中建立 XmlTextWriter,利用 XmlSerializer 將 Nodes 屬性完整序列化為 XML 文件:

StringWriter myStrWriter = new StringWriter();
XmlTextWriter myXMLWriter = new XmlTextWriter(myStrWriter);
if (this.IndentXML && !this.GenerateAtServer) {
  myXMLWriter.Indentation = 3;
  myXMLWriter.IndentChar = ' ';
  myXMLWriter.Formatting = Formatting.Indented;
}
XmlSerializer xser = new XmlSerializer(typeof(SkyTreeNodeList));
xser.Serialize(myXMLWriter, this.Nodes);
myXMLWriter.Close();
string xml = myStrWriter.ToString();

伺服器端生成 HTML 分支

若 GenerateAtServer == true,採用伺服器端 XSLT 轉換:

string xslt = ReadXSLTString();
XmlDocument xsltDoc = new XmlDocument(); xsltDoc.LoadXml(xslt);
XmlDocument nodeDoc = new XmlDocument(); nodeDoc.LoadXml(xml);
StringWriter output = new StringWriter();
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(xsltDoc);
transform.Transform(nodeDoc, null, output);
writer.Write(output.ToString());

客戶端動態載入分支

輸出 XML 資料島與初始化腳本,支援節點級動態載入:

// 容器與載入提示
writer.Write("<span id='" + this.ClientID + "_container'>正在載入...</span>");
// 節點資料 XML 資料島
writer.Write("<xml id='" + this.ClientID + "_xml'>" + xml + "</xml>");
// 啟動腳本
this.Page.ClientScript.RegisterStartupScript(
  this.GetType(), "SkyTreeViewControl_Init_" + this.ClientID,
  @"<script language=JavaScript>RefreshSkyTreeViewControl('" + this.ClientID + @"');</script>"
);

此雙模式架構讓開發者可根據節點數量、網路環境靈活切換渲染策略。

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