程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅-高性能ASP.NET樹狀列表控件(中)(6)

C#發現之旅-高性能ASP.NET樹狀列表控件(中)(6)

編輯:關於C語言

這段代碼中,首先調用函數ReadXSLTString從資源文件“SkyTreeVIEwControl.xslt”加載一個XML文檔,然後創建一個NodeXmlDocument變量,調用它的LoadXml函數對根節點進行XML序列化所得的XML字符串來生成XML文檔,然後創建一個 System.XML.Xsl.XslCompiledTransform類型的XSLT轉換引擎,調用它的Load方法加載XSLT模板,調用它的 Transform方法來執行XSLT轉換,轉換結果輸出到myStrWriter的字符串書寫器中,這個字符串書寫器中的內容就是用於顯示樹狀結構的 HTML代碼。然後程序使用RenderContent函數的writer參數將這個Html代碼輸出到頁面中。

若不是在服務器端生成HTML代碼,那就是在客戶端生成代碼了,於是程序輸出一個XML數據島的Html代碼,該數據島的內容就是節點XML文檔的內容。實現這個功能的C#代碼為

// 若在客戶端動態生成Html代碼則將數據XML字符串輸出到ASPX頁面中
writer.Write("<span id='" + this.ClIEntID + "_container' >正在加載,請稍候</span>");
// 將數據XML字符串輸出到ASPX頁面中的一個XML數據島中
writer.Write("<xml id='" + this.ClIEntID + "_xml'>" + xml + "</XML>");
// 輸出將要初始化樹狀列表的Javascript函數
this.Page.ClIEntscript.RegisterStartupscript(
    this.GetType() ,
    "SkyTreeViewControL_Init_" + this.ClIEntID , @"
<script language=Javascript>
RefreshSkyTreeViewControl( '" + this.ClIEntID + @"' );
< /script>
");

這裡調用了RegisterStartupscript函數,使得HTML頁面加載時立即調用名為 RefreshSkeyTreeVIEwControl 的Javascript函數來初始化這個樹狀列表,本控件輸出的第二段Html代碼就包含了該Javascript函數。

操作數據視圖

本WEB控件還在數據視圖中保存數據,其功能代碼為

/// <summary>
/// 保存數據視圖狀態
/// </summary>
/// <returns>操作結果</returns>
protected override object SaveVIEwState()
{
    this.VIEwState["nodes"] = this.myNodes ;
    return base.SaveVIEwState ();
}
/// <summary>
/// 加載數據視圖狀態
/// </summary>
/// <param name="savedState">操作結果</param>
protected override void LoadVIEwState(object savedState)
{
    myNodes = this.VIEwState["nodes"] as SkyTreeNodeList ;
    base.LoadVIEwState (savedState);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved