• Coolite comboBox控件动态显示树形结构(无限树)


    效果图:

    前台部份:

    <ext:Store ID="Store1" runat="server" AutoLoad="false" >
            <Reader>
                <ext:JsonReader ReaderID="id">
                    <Fields>
                        <ext:RecordField Name="id" Type="String" Mapping="id" />
                        <ext:RecordField Name="name" Type="String" Mapping="name" />
                    </Fields>
                </ext:JsonReader>
            </Reader>

     </ext:Store>

    <ext:ComboBox ID="cboSortCoding" runat="server" Enabled="true" FieldLabel="知识类别" EmptyText="请选择知识类别" 
       AllowBlank="false" BlankText="请选择知识类别!" Width="260" DisplayField="name"  ValueField="id"   
       StoreID="Store1" Editable="false" /> 

    后台部分:

        System.Data.DataView dv;
        List<object> data = new List<object>();
        int NodeLevelNum = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                clsDA_kno_KnowledgeSort myKnoSort = new clsDA_kno_KnowledgeSort();//读数据库
                dv =myKnoSort.m_Select().DefaultView;//得到DataTable
                m_InitKnoSort(0);

                this.Store1.DataSource = data;
                this.Store1.DataBind();

             }
        }

        //初始化下拉菜单
        private void m_InitKnoSort(int intParentNote)
        {
            dv.RowFilter = String.Format("ParentNode={0}", intParentNote);
            foreach (DataRowView drv in dv)
            {
                if (intParentNote != 0)//第一个节点不加

                {
                    string strNodeName = drv["NodeName"].ToString();

                    strNodeName = m_NodeLevel(intParentNote) + strNodeName;

                    data.Add(new { id = drv["Node"].ToString(), name = strNodeName });
                }
                m_InitKnoSort((int)drv["Node"]);
            }
        }

        //通过节点级数合成为 2级则为"--"
        private string m_NodeLevel(int intParentNote)
        {
            string str = "";
            NodeLevelNum = 0;
            m_NodeLevelNum(intParentNote);
            for (int i =2; i < NodeLevelNum; i++)
            {
                str = str + "—";
            }
            return str;
        }

        //获取节点级数
        private void m_NodeLevelNum(int intParentNote)
        {
            NodeLevelNum = NodeLevelNum + 1;
            System.Data.DataView dv1 = new System.Data.DataView();
            dv1=dv;
            dv1.RowFilter = String.Format("Node={0}", intParentNote);
            foreach (DataRowView drv in dv)
            {
                m_NodeLevelNum((int)drv["ParentNode"]);
            }
        }

    数据库部分:

    select * from kno_KnowledgeSort ORDER BY NodeOrder asc

  • 相关阅读:
    centos安装杂记inittabhostnamessh
    centos6安装aircrack,reaver1.4
    20175236 201820192 《Java程序设计》第五周学习总结
    20175236 201820192 《Java程序设计》第三周学习总结
    20175236 JAVA MyCP(课下作业)
    20175236 201820192 《Java程序设计》第六周学习总结
    小学生之Java中的异常
    小学生之面向对象的三个特征继承、封装、多态
    小学生之类与对象
    小学生之手(01)之 "for循环"
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/1780212.html
Copyright © 2020-2023  润新知