DevExpress学习之Treelist递归添加节点实现部门上下级问题

 public void Bind()
        {
            string sql;
            this.treeList1.ClearNodes();
            sql = "select deptID,deptName from sys_tx_kqSystem_dept where TreeLevel = 2 order by deptID ";
            if (!DB.AF.execSql(sql, sqlconnOA, out dt))
            {
                MessageBox.Show("Error!");
                return;
            }
            if (dt.Rows.Count > 0)
            {

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeListNode nodeTemp = treeList1.AppendNode(dt.Rows[i]["deptID"], null);
                    //nodeTemp.SetValue(treeList1.Columns[0], dt.Rows[i]["deptID"]);
                    nodeTemp.SetValue(treeList1.Columns[0], dt.Rows[i]["deptName"]);
                    nodeTemp.Tag = dt.Rows[i];
                    sql = "select deptID,deptName from sys_tx_kqSystem_dept where UpCode ='" + dt.Rows[i]["deptID"] + "'";
                    DataTable ds;
                    if (!DB.AF.execSql(sql, sqlconnOA, out ds))
                    {
                        MessageBox.Show("父:Error!");
                        return;
                    }
                    if (ds.Rows.Count > 0)
                        GetChildNode(nodeTemp, dt.Rows[i]["deptID"]);
                }
                
            }
        }
        public void GetChildNode(TreeListNode nodeTemp, object parent)
        {
            string sql = "select deptID,deptName from sys_tx_kqSystem_dept where UpCode=" + parent + " order by deptID";
            DataTable zi;
            if (!DB.AF.execSql(sql, sqlconnOA, out zi))
            {
                return;
            }
            if (zi.Rows.Count > 0)
            {
                for (int i = 0; i < zi.Rows.Count; i++)
                {
                    //MessageBox.Show("子:" + zi.Rows[i]["deptID"].ToString());
                    TreeListNode nodelist = nodeTemp.TreeList.AppendNode(zi.Rows[i]["deptID"], nodeTemp);
                    //nodelist.SetValue(treeList1.Columns[0], zi.Rows[i]["deptID"]);
                    nodelist.SetValue(treeList1.Columns[0], zi.Rows[i]["deptName"]);
                    nodelist.Tag = zi.Rows[i];
                    sql = "select deptID,deptName from sys_tx_kqSystem_dept where UpCode ='" + zi.Rows[i]["deptID"] + "'";
                    DataTable ds;
                    if (!DB.AF.execSql(sql, sqlconnOA, out ds))
                    {
                        MessageBox.Show("父1:Error!");
                        return;
                    }
                    if (ds.Rows.Count > 0)
                        GetChildNode(nodelist, zi.Rows[i]["deptID"]);
                }
            }
        }

效果图:

但是我这个语法加载速度还是很慢的,每次都得反应好长时间。听说可以结合josn先把数据放到前台,然后再怎么怎么的可以提高效率,这个后面再研究,等我琢磨出来了再更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章