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

好了如果有用 ,轻轻点个赞可好?

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页