国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

開發(fā)asp.net自定義控件(asp.net學習筆記三)

2024-07-10 12:55:47
字體:
供稿:網(wǎng)友
 

上一章我們寫了一個最簡單的自定義控件,此次讓我們拋開理論,實際開發(fā)一個具有實用意義的自定義控件:一個可以設(shè)置權(quán)限的菜單。

在這個項目中我們將不采用任何未學到的理論知識,用戶只需要具有基本的dhtml知識就可以。如你所知,服務器控件不過是對一些html及javascript的封裝罷了。至于其它的技巧,將來我們會逐漸提及并應用,最終生產(chǎn)出具有商業(yè)水準的控件來。

制作這個控件的思路很簡單:首先使用dhtml寫出一個菜單來,然后把其中的屬性提取出來,接著封裝起腳本與html顯示代碼,最后將其作為參數(shù)重寫render方法。你看,就這么簡單。

如果不想透過瀏覽器閱讀代碼(那實在很討厭),你可以到如下地址下載這個項目的源碼,其中包括這個自定義控件的源代碼及各類測試文件:不同的數(shù)據(jù)源以及權(quán)限設(shè)定。

http://user1.7host.com/cashtsao//cashmenu0110.zip

 

首先在名稱空間cashcontrols中聲明一個枚舉類型mainmenualign:

public enum mainmenualign

    {

        /// <summary>

        /// 左

        /// </summary>

        left=0,

        /// <summary>

        /// 中間

        /// </summary>

        center=1,

        /// <summary>

        /// 右

        /// </summary>

        right=2

    }

接著聲明繼承自webcontrols的類cashmenu,聲明如下變量及屬性:

變量:

private system.web.httpcontext contextobject;

        private system.xml.xmldocument oxmldoc=new xmldocument();

        private string menudata;

        private mainmenualign mainmenualign=mainmenualign.center;

        private string rulestring="admin";

        private int cellspacing;

        private int mainmenuheight;

屬性:

/// <summary>

        /// 屬性menudata用于指定數(shù)據(jù)源,可以是某個xml文件,

///也可以是xml格式之字符串

        /// </summary>

        [bindable(true),

        category("data"),description("為menu提供xml數(shù)據(jù)源.")]

public string menudata

        {

            get

            {

                return menudata;

            }

 

            set

            {

                menudata = value;

                build();

            }

        }

 

......

 

聲明輔助方法:

/// <summary>

        /// 方法build用于綁寫數(shù)據(jù)源,將其綁定到context上,在屬性menudata中調(diào)用

        /// </summary>

        private void build()

        {

            if (menudata!=null)

                try

                {

                    contextobject = this.context;

                    if (contextobject!=null)

                        oxmldoc.load(contextobject.server.mappath(menudata));

                }

                catch

                {

                    try

                    {

                        oxmldoc.loadxml(menudata);

                    }

                    catch (exception e)

                    {

                        contextobject.response.write("打開數(shù)據(jù)源失敗!<br>");

                        contextobject.response.write(e.message);

                    }

                }

            return;

        }

        /// <summary>

        /// 方法generatehtml用于生成html代碼,調(diào)用traversemenutree方法,傳遞context中oxmldoc的一個節(jié)點進去

/// </summary>

        /// <returns></returns>

        private string generatehtml()

        {

            string temphtml = "";

            if (oxmldoc.childnodes.count !=0) 

            {

                try

                {

                    temphtml = temphtml + traversemenutree(oxmldoc.childnodes.item(1).firstchild);

                }

                catch

                {

                    throw new argumentexception("發(fā)生錯誤."); 

                }

            }

            return(temphtml);

           

        }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 清丰县| 罗江县| 绥中县| 丰原市| 大宁县| 河源市| 六枝特区| 洪泽县| 巴青县| 长垣县| 漳州市| 玛沁县| 垦利县| 阿瓦提县| 永兴县| 乌恰县| 桐柏县| 霍城县| 大安市| 永胜县| 陆良县| 福贡县| 正阳县| 渝北区| 壤塘县| 手游| 合作市| 离岛区| 浦江县| 中方县| 尚义县| 东兰县| 济宁市| 乌恰县| 大名县| 泰州市| 洮南市| 敦煌市| 渝北区| 清河县| 杭锦旗|