DevEpress控件的treeList完整小案例.docx
- 文档编号:23288724
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:9
- 大小:49.43KB
DevEpress控件的treeList完整小案例.docx
《DevEpress控件的treeList完整小案例.docx》由会员分享,可在线阅读,更多相关《DevEpress控件的treeList完整小案例.docx(9页珍藏版)》请在冰豆网上搜索。
DevEpress控件的treeList完整小案例
DevExpress控件的treeList完整小案例
这篇内容对刚接触treeList的程序员来说,会有一定的帮助。
以下会以一个小案例来讲解treeList的一些属性方法及事件
这是程序的窗体,frmTableMaintenance为窗体名,而groupControl1是一个分组控件,添加和修改都是用同一个分组,也就是说,不管是添加还是修改,用的都是同一个页面,而button跟随操作的变化而变化
首先,加载树,即将数据绑定到treeList中
1///
2///加载树
3///tl_TableMaintain是treeList的名称
///对于绑定数据,treeList有自带的,可以不用自己去递归。
直接指定KeyFieldName(主键),
ParentFieldName(父键),以及tag值。
try
this.tl_TableMaintain.Nodes.Clear();//清
空所有节点,以便重新加载
10
Global.Get("System/GetTableMaintain");
12
14
(List)JsonConvert.DeserializeObject(_arryTableName.Result,
typeof(List));//数据源snList,这里获取数据源的方式可自由
定义
16
17
19
tl_TableMaintain.AppendNode(null,-1);
node.SetValue(treeListColumn1,"表结
构维护");
20
LoadTreeCtrl(node,"-1");
21
TreeListProperty(tl_TableMaintain);//调
用方法,
设置属性
22
}
23
catch(Exceptionex)
24
{}
25
}
26
27
28
privatevoidLoadTreeCtrl(TreeListNodepnode,
stringparentkey)
29
{
30
try
31
{
32
intindex=0;
33
Listdv=_snList.Where(o=>
o.parent_key.Trim()==parentkey.Trim()).ToList();//根据父级id获取子节点循环加载
34
foreach(erp_dev_tablervindv)
35
{
36
TreeListNodenode=
pnode.TreeList.AppendNode(rv.table_key,pnode);
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
37
node.SetValue(0,
rv.table_name_english);
38
39
node.Tag=rv;
LoadTreeCtrl(node,
Command.Instance.Getstring(rv.table_key));
}
}
catch(Exceptionex)
{
}
}
///
///设置treeList的属性
///
///
privatevoidTreeListProperty(TreeListtl)
58tl.OptionsView.ShowColumns=false;//是否
显示选中的行
59tl.OptionsBehavior.Editable=false;//不可编
辑
60tl.OptionsView.ShowHorzLines=false;//OptionsView提供对树状列表的显示选项,设置水平线是否显示
61tl.OptionsView.ShowIndicator=false;//节点的指示面板是否显示
62tl.OptionsView.ShowVertLines=false;//垂直
线条是否显示
63//设置treeList的折叠样式为+-号
64tl.LookAndFeel.UseDefaultLookAndFeel=
false;
65tl.LookAndFeel.UseWindowsXPTheme=
true;
66tl.OptionsSelection.InvertSelection=true;//
聚焦的样式是否只适用于聚焦细胞或所有细胞除了聚焦对象,失去焦点后
67}
69
然后,单击或双击树节点时,加载该节点对象的详细信息,如图:
如果树里面的节点较多,可以采取查询的方法定位到该节点上。
如图中的查询框一样,当点击查询时,查看数据库中是否存在该对象,若存在,则将焦点定位到该节点上,反之,则提示输入的对象不存在!
如图:
代码如下:
1///
2///点击查询,查出相应的
3///
4///
5///
EventArgse)
7{
8
tName=txt_name.Text.Trim();
9
if(!
String.IsNullOrEmpty(tName))
10
{
11
12
GetTMByName();
13
btn_saveOrUpdate.Text="修改";
14
}
15
else
16
{
17
6
Global.ShowMeg(Command.MsgType.Warning,"请填写您要
查询的表名");
18
this.txt_name.Focus();
19
}
20
}
21
22
///
23
///
迭代找到节点
24
///
privatevoidbtn_selectTName_Click(objectsender,
28
privateTreeListNodeforNode(TreeListNode
node,stringtext)
29
(erp_dev_table)node.Tag;
33
32
if(tableOne.table_name_english==text)
34
35
returnnode;
36
37
38
40
43
foreach(TreeListNodeninnode.Nodes)
TreeListNodern=forNode(n,text);
45
returnrn;
46
47
}
48
returnnull;
49}
50
51
52publicvoidGetTMByName()
53{
54
TreeListNodenode=
forNode(this.tl_TableMaintain.Nodes[0],tName);
55
if(node==null)
56
{
57
Global.ShowMeg(Command.MsgType.Warning,"您输入有误,
当前实体不存在
");
58
return;
59
}
60
61
if(node.ParentNode.Expanded==false)
62
{
63
node.ExpandAll();
64
65
}
66
this.tl_TableMaintain.FocusedNode=node;
67
BangDing();
68
69
70
}
71
publicvoidBangDing(){
_currNode=
(erp_dev_table)tl_TableMaintain.FocusedNode.Tag;erp_dev_tabletb=_currNode;txt_chinaName.Text=tb.table_name_chain;txt_englishName.Text=tb.table_name_english;grp_tableDesc.Text="当前节点为
"+tb.table_name_english;
if(tb.table_type==1)
{
rd_directory.Checked=
true;}
elseif(tb.table_type==2){
rb_table.Checked=true;}txt_remark.Text=tb.table_memo;med_desc.Text=tb.table_descr;
grp_tableDesc.Show();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DevEpress 控件 treeList 完整 案例