devexpress treelist綁定DataTable不出現層級關係問題注意事項

太久沒寫博客了,公司項目winform項目用上了DevExpress框架,自己對這個也不是很熟悉,簡單瞭解了下,發現這個框架用來寫winform界面非常美觀,缺點是屬性太複雜,需要設置很多相應屬性才能達到想要的效果。
今天在用treelist 綁定datatable數據時遇到了個奇怪的問題。無論數據怎麼看,屬性怎麼設置都沒有出現優美的層級效果。如下:
這裏寫圖片描述
這是treelist部分數據圖片。
屬性代碼設置如下:
這裏寫圖片描述
這個兩屬性設置很重要,如果不設置這兩個屬性,treelist是不知道如何判斷層級關係的
KeyFieldName:是節點id,ParentFieldName:是父節點id,當然這兩個是區別大小寫的,即:查出來的datatable的列名大小寫是什麼這個就要設置爲什麼 ,否則解析不出來。
另外在貼上我查出來的數據表:
這裏寫圖片描述
(當然,以上treelist的數據列column是我在設計器里加的)屬性設置:
這裏寫圖片描述
做到以上,你以爲就可以成功了嗎? 我只能悲傷的告訴你,第一張圖就是這樣寫然後出來的結果 絕望嘛 0.0 爲此又折騰了1個小時。
解決辦法如下:
而然看到一篇文章說datatable結果可能需要按節點順序排序(將根節點排在datatable最上面,其次是子節點1、子節點2,然後是子節點1.1、子節點2.2,然後是節點1.1.1···同理。簡單說就是父節點在datatable中的位置要比其子節點靠前),於是就試了試 ,果然有效。
如圖:
這裏寫圖片描述
這是排序之後的datatable數據表圖。
好了 我們看看結果吧:
這裏寫圖片描述
樹狀圖出來了 不知道爲什麼devexptreelist 需要自己排序。
如果說它是按照datatable一行一行的添加層級關係的話,難道不應該在添加之前自己對數據排個序嘛??? 憂傷。
另外附上獲取樹節點某列數據的方法吧:貼圖多方便,但是你們不好複製呀 0.0 (我多善良):

/// <summary>
        /// 得到treelist複選框勾選節點的某一列值,列不在treel中時,返回空list
        /// </summary>
        /// <param name="treeListdzq">treelist</param>
        /// <param name="columnfiled">treelist某列數據綁定的字段</param>
        /// <returns>獲取選擇列的List str</returns>
        public static List<string> GetTreeKeyValue(TreeList treeListdzq, string columnfiled)
        {
            List<string> qxdmList = new List<string>();
            if (treeListdzq != null && !string.IsNullOrEmpty(columnfiled))
            {
                qxdmList.AddRange(treeListdzq.GetAllCheckedNodes().Select(node => node.GetValue(columnfiled).ToStringIsNull()));
            }
            return qxdmList;
        }

好了如果有用 ,輕輕點個贊可好?

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