天天看點

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

                }