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

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

編輯:關於C語言

OnLoad 函數

控件重寫了WebControl的OnLoad函數,其代碼為

/// <summary>
/// 控件加載時的處理,此時控件尚未向頁面輸出Html代碼。
/// </summary>
/// <param name="e">事件參數</param>
protected override void OnLoad(EventArgs e)
{
    base.OnLoad (e);
    // 包含樹狀列表節點樣式的Html代碼
    string strStyleHtml = "\r\n.SkyTreeVIEwControl_TreeNode { " + this.TreeNodeStyleString + "}"
                + "\r\n.SkyTreeVIEwControl_SelectedNode{" + this.SelectedNodeStyleString + "}\r\n";

    // 添加樹狀節點使用的CSS樣式代碼
    if (this.Page.Header != null)
    {
        // 若在ASPX的Html代碼中使用了“<head runat=server>.</head>”則
        // this.Page.Header屬性有效,可以向head標簽下添加新內容。
        // 按照比較嚴格的Html規范,style標簽只能放置在head標簽下面。
        // ASP.NET2.0支持this.Page.Header屬性,但ASP.Net1.0/1.1不支持。
        bool find = false;
        foreach (System.Web.UI.Control ctl in this.Page.Header.Controls)
        {
            // 搜索Header下面的所有的子元素,看看是否已經輸出過樹狀列表
            // 節點樣式元素。
            if (ctl.ID == "SkyTreeVIEwControl_Style")
            {
                find = true;
                break;
            }
        }
        if (find == false)
        {
            // 若以前沒有輸出則向Header元素下添加新的style元素,並設置其內容。
            HtmlGenericControl style = new HtmlGenericControl("style");
            style.ID = "SkyTreeVIEwControl_Style";
            style.InnerHtml = strStyleHtml;
            this.Page.Header.Controls.Add(style);
        }
    }
    else
    {
        // 不能在Render或RenderContents函數中使用RegisterClIEntscriptBlock
        // 因為那時RegisterClIEntscriptBlock函數的功能已經不在狀態,無效了。
        // 而OnLoad函數中頁面尚未開始輸出,此時RegisterClIEntscriptBlock函數
        // 是有效的。
        this.Page.Clientscript.RegisterClIEntscriptBlock(
            this.GetType(),
            "SkyTreeVIEwControl_Style",
            "<style>" + strStyleHtml + "</style>");
    }
}

這裡的樹狀節點列表需要根據其選擇狀態而使用屬性“TreeNodeStyleString”或 “SelectedNodeStyleString”中指定的CSS樣式,為了減少HTML代碼量,將生成一個style的Html標簽,該標簽包含了屬性“TreeNodeStyleString”或“SelectedNodeStyleString”指定的CSS樣式,而對樹狀列表節點采用 “class=’樣式名稱’”來選擇其CSS顯示樣式。

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