天天看点

dev控件treelist的几个小用法

1.treelist添加节点方法;

方法一:使用数据源方式;

设置列名的显示列名称和显示数据在数据源列表中的字段名称;设置如下,列可以在treelist的 collection中设置,也可以在代码里自己添加;列设置较多选择,一般如果列不变化,自己在collention中设置比较全面;

列名1.Caption = "部门名称";

            列名1.FieldName = "DEPARTMENTNAME";

            treelist.DataSource = allDeparmentList;

方法二:手动循环添加节点;

列设置如上:

TreeListNode roleNode = trRole.AppendNode(new object[] { role.ROLENAME, role.ROLEID }, departNode);

                    roleNode.Tag = role;

                    roleNode.StateImageIndex = 1;

tag一般设置为模型数据,StateImageIndex 为添加节点前面显示的图标位置,图标列表在treelist.stateImageList设置,添加imagelist即可;

这样的设置方法比较灵活,StateImageIndex 还可以用来区别节点级别(不使用图标imagelist时也可以使用);

2.修改节点值

node.setvalue(index,value);

3.节点选择的排序

在显示较多节点时,一般对子节点进行排序;

treelist.selection表示选择的节点的集合;设置节点可以多选,在属性OptionsSelection里MultiSelect=true;即可;

treelist.selection.indexof(选中的node)表示该节点是第几个被选中的,不是按照node的列表顺序走,而是根据选中的前后顺序;

treelist.nodes.indexof(node)表示的是所有节点的顺序,按前后顺序走的;

在排序的时候,一般要求不改变选中的node的前后顺序,而用户选择时不一定排前后顺序来选择;因此,我们对选中的node作一个排序,再进行到顶或到底端的设置;(如果只是向上一行,向下一行,不到顶或底的设置,直接设置选中的node的treelist.setnodeindexof( treelist.nodes.indexof(node)加或减1)即可);

                List<TreeListNode> sortListNodes = new List<TreeListNode>();

                foreach (TreeListNode node in treelist.Nodes)

                {

                    if (tlData.Selection.Contains(node))

                        sortListNodes.Add(node);

                }

//这里是设置选中的节点到顶端,如果是到底端,要从i=0开始;

                for (int i = sortListNodes.Count - 1; i >= 0; i--)

                {

                    treelist.SetNodeIndex(sortListNodes[i], 0);

                }