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

    效果图:

    代码:

    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();
        }
    }


    调用:

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


     

  • 相关阅读:
    Java框架-Spring MVC理解004-spring MVC处理请求
    codeforces 484C Strange Sorting Codeforces Round #276 (Div. 1) C
    POJ 3415 Common Substrings 后缀数组+并查集
    HDU 5010 Get the Nut(2014 ACM/ICPC Asia Regional Xi'an Online)
    ZOJ 3817Chinese Knot(The 2014 ACM-ICPC Asia Mudanjiang Regional First Round)
    HDU 4946 Area of Mushroom(2014 Multi-University Training Contest 8)
    HDU 4951 Multiplication table(2014 Multi-University Training Contest 8)
    HDU 4938 Seeing People(2014 Multi-University Training Contest 7)
    HDU 4944 FSF’s game(2014 Multi-University Training Contest 7)
    HDU 4937 Lucky Number(2014 Multi-University Training Contest 7)
  • 原文地址:https://www.cnblogs.com/apollokk/p/6713920.html
Copyright © 2011-2022 走看看