zoukankan      html  css  js  c++  java
  • ASP.NET C# 生成下拉列表树


    效果图:

    代码:

    [csharp]  

    using System.Data;  

    using System.Web.UI.WebControls;  

      

    /// <summary>  

    /// 根据DataTable生成下拉列表树  

    /// </summary>  

    public class DropDownListHelp  

    {  

        private string gridline;  

        private DataTable dt;  

        public DropDownListHelp()  

        {  

            //  

            //TODO: 在此处添加构造函数逻辑  

            //  

        }  

        /// <summary>  

        /// 根据Datatable生成树形下拉菜单  

        /// </summary>  

        /// <param name="datatable"></param>  

        /// <param name="parentKeyField">上级节点关键字段</param>  

        /// <param name="parentKey">上级节点值</param>  

        /// <param name="keyField">本节点关键字段</param>  

        /// <param name="sortString">排序字符串</param>  

        /// <param name="ddl">DownList</param>  

        public void createDropDownTree(DataTable datatable, string parentKeyField, string parentKey, string keyField, string textField, string sortString, DropDownList ddl)  

        {  

            dt = datatable;  

            ddl.Items.Add(new ListItem("", ""));  

            addChildItems(parentKeyField, parentKey, keyField, textField, sortString, ddl);  

        }  

        /// <summary>  

        /// 递归生成树节点  

        /// </summary>  

        /// <param name="parentKeyField">上级节点关键字段</param>  

        /// <param name="parentKey">上级节点值</param>  

        /// <param name="keyField">本节点关键字段</param>  

        /// <param name="sortString">排序字符串</param>  

        /// <param name="ddl">DownList控件</param>  

        /// <returns></returns>  

        private void addChildItems(string parentKeyField, string parentKey, string keyField, string textField, string sortString, DropDownList ddl)  

        {  

            DataView dv = new DataView(dt, parentKeyField + "='" + parentKey + "'", sortString, DataViewRowState.CurrentRows);  

            int a = dv.Count;  

            if (dv.Count == 0)  

            {  

                return;  

            }  

            for (int i = 0; i < a; i++)  

            {  

                gridline = "";  

                dv.RowFilter = parentKeyField + "='" + parentKey + "'";  

                dv.Sort = sortString;  

                getTreeLine(parentKeyField, dv[i][parentKeyField].ToString(), keyField, dv[i][keyField].ToString(), sortString);  

                dv.RowFilter = parentKeyField + "='" + parentKey + "'";  

                dv.Sort = sortString;  

                ddl.Items.Add(new ListItem(gridline + (i == a - 1 ? "┗" : "┣") + dv[i][textField].ToString(), dv[i][keyField].ToString()));  

                addChildItems(parentKeyField, dv[i][keyField].ToString(), keyField, textField, sortString, ddl);  

            }  

            dv.Dispose();  

        }  

      

        /// <summary>  

        /// 回溯生成树的连接线  

        /// </summary>  

        /// <param name="parentKeyField">上级节点关键字段</param>  

        /// <param name="parentKey">上级节点值</param>  

        /// <param name="keyField">本节点关键字段</param>  

        /// <param name="nodeKey">本节点值</param>  

        /// <param name="sortString">排序字符串</param>  

        /// <returns></returns>  

        private void getTreeLine(string parentKeyField, string parentKey, string keyField, string nodeKey, string sortString)  

        {  

            //选择父层节点  

            DataView dv = new DataView(dt, keyField + "='" + parentKey + "'", sortString, DataViewRowState.CurrentRows);  

            if (dv.Count > 0)  

            {  

                //选择父节点同级节点  

                dv.RowFilter = parentKeyField + "='" + dv[0][parentKeyField].ToString() + "'";  

                dv.Sort = sortString;  

                for (int j = 0; j < dv.Count; j++)  

                {  

                    if (dv[j][keyField].ToString() == parentKey)  

                    {  

                        if (j == dv.Count - 1)  

                        {  

                            gridline = " " + gridline;  

                        }  

                        else  

                        {  

                            gridline = "┃" + gridline;  

                        }  

                    }  

                }  

                getTreeLine(parentKeyField, dv[0][parentKeyField].ToString(), keyField, dv[0][keyField].ToString(), sortString);  

            }  

            dv.Dispose();  

        }  

    }  

    调用:

    [csharp]  

    DropDownListHelp ddlHelper = new DropDownListHelp();  

    ddlHelper.createDropDownTree(dt, "parentID", "1", "ID","Text", "Text asc", DropDownList1);  

  • 相关阅读:
    Unreal Engine 4 Based Materials
    PhysX Clothing for UE4
    UE4中使用URL图片
    开始创作自己的VR作品——VR故事叙述终极指南
    UE4里的自定义深度功能
    Mybatis27题
    java 备用待迁移
    几个算法题目
    数据结构算法题目
    Mybatis 面试题
  • 原文地址:https://www.cnblogs.com/ljs-13/p/12108634.html
Copyright © 2011-2022 走看看