天天看點

帶線的無限級下拉樹清單

好多年沒寫文章了

這裡就分享點自己原創的一點破代碼,效果如圖下:

帶線的無限級下拉樹清單

本人的提供的代碼如下:

帶線的無限級下拉樹清單

using system;

帶線的無限級下拉樹清單

using system.collections.generic;

帶線的無限級下拉樹清單

using system.text;

帶線的無限級下拉樹清單

using system.web.ui.webcontrols;

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

namespace interface.common

帶線的無限級下拉樹清單

{

帶線的無限級下拉樹清單

    public interface idropdowntree : idisposable

帶線的無限級下拉樹清單

    {

帶線的無限級下拉樹清單

        /// <summary>

帶線的無限級下拉樹清單

        /// 傳回dictionary裡分别對應id,文本,如果沒有子節點傳回null

帶線的無限級下拉樹清單

        /// </summary>

帶線的無限級下拉樹清單

        /// <param name="parentid">父節點id</param>

帶線的無限級下拉樹清單

        /// <returns></returns>

帶線的無限級下拉樹清單

        dictionary<string, string> getchildcategory(string parentid);

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

        /// 代碼裡寫return new interface.common.dropdowntree(this);

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

        dropdowntree dropdowntree

帶線的無限級下拉樹清單

        {

帶線的無限級下拉樹清單

            get;

帶線的無限級下拉樹清單

        }

帶線的無限級下拉樹清單

    }

帶線的無限級下拉樹清單

    public sealed class dropdowntree

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

        idropdowntree _dropdowntree;

帶線的無限級下拉樹清單

        public dropdowntree(idropdowntree dropdowntree)

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

            _dropdowntree = dropdowntree;

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

        /// 用于樹的字首

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

        /// <param name="islast">是否是同級節點中的最後一個</param>

帶線的無限級下拉樹清單

        /// <param name="haschild">本節點是否擁有子節點</param>

帶線的無限級下拉樹清單

        /// <param name="parentstring">父節點字首符号</param>

帶線的無限級下拉樹清單

        /// <returns>本節點的字首</returns>

帶線的無限級下拉樹清單

        private string getprefix(bool islast, bool haschild, string parentstring)

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

            string result = string.empty;

帶線的無限級下拉樹清單

            if (!string.isnullorempty(parentstring))

帶線的無限級下拉樹清單

            {

帶線的無限級下拉樹清單

                parentstring = parentstring.remove(parentstring.length - 1).replace("├", "│").replace("└", " ");

帶線的無限級下拉樹清單

                result += parentstring;

帶線的無限級下拉樹清單

            }

帶線的無限級下拉樹清單

            if (islast)

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

                result += "└";

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

            else

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

                result += "├";

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

            if (haschild)

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

                result += "┬";

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單
帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

                result += "─";

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

            return result;

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

        綁定下拉菜單

帶線的無限級下拉樹清單
帶線的無限級下拉樹清單

}

調用方法很簡單:

1.繼承自idropdowntree接口

2.實作3個接口方法

實作接口代碼示例[dispose方法自己實作],最主要的是自己實作獲得子級的方法

帶線的無限級下拉樹清單

 idropdowntree 成員

頁面調用代碼: 類名.dropdowntree.bindtodropdownlist(下拉控件id);

希望對大夥有點幫助....

版權聲明:本文原創發表于部落格園,作者為路過秋天,原文連結:http://www.cnblogs.com/cyq1162/archive/2008/04/17/1157507.html