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先把數據放到前臺,然後再怎麼怎麼的可以提高效率,這個後面再研究,等我琢磨出來了再更新。

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