如何绑定数据到ASPxTreeList
wpf之treelist的实现方法

wpf之treelist的实现方法WPF之TreeList的实现方法WPF(Windows Presentation Foundation)是微软推出的一种用于创建Windows客户端应用程序的框架。
TreeList是WPF中常用的控件之一,它可以展示树形结构的数据,并且具有列表的功能。
本文将介绍如何使用WPF来实现TreeList控件。
一、TreeList的基本概念在开始介绍具体的实现方法之前,我们先了解一下TreeList的基本概念。
TreeList是由TreeView和ListView两个控件组合而成的,它可以同时展示树形结构和列表数据。
TreeList的树形结构是由TreeView来实现的,而列表数据则是由ListView来实现的。
通过TreeList,我们可以方便地展示和操作具有层次结构的数据。
二、创建一个基本的TreeList控件下面我们来演示如何创建一个基本的TreeList控件。
1. 首先,在Visual Studio中创建一个新的WPF应用程序项目。
2. 打开MainWindow.xaml文件,在窗体中添加以下代码:```xml<Grid><wpf:TreeList x:Name="treeList"><wpf:TreeList.Columns><wpf:TreeListColumn Header="Name" Width="150" /> <wpf:TreeListColumn Header="Age" Width="100" /> <wpf:TreeListColumn Header="Gender" Width="100" /></wpf:TreeList.Columns></wpf:TreeList></Grid>```在这段代码中,我们使用了TreeList控件,并定义了三列(Name、Age和Gender)。
WPF新手之如何将数据绑定到TreeView

WPF新⼿之如何将数据绑定到TreeView看过许多例⼦,全是绑定到类的,没⼈说如何绑定到某个对象,偏偏我这个绝对的新⼿就是要绑定到⼀个对象,只能⾃⼰摸索了:⾸先要将数据绑定到容器,有以下⼏个默认条件:①元数据必须包装在List或者ObservableCollection中,后者具有动态更新的功能。
即,如果在程序中更改了ObservableCollection的值,与之绑定的控件会⾃动得到更新。
②待绑定的元数据可以是基本类型,也可以是复杂对象,这样就可以实际像TreeView这样的嵌套显⽰,但对象的每个成员都必须是基本类型,或者是ObservableCollection。
这⼀点我花了⼀天的时间才⾃⼰琢磨出来。
③类中的所有成员变量全部要以get、set设置其访问属性。
⼜花了我⼀天。
举例如下:[c-sharp]1. public class IPConfig2. {3. public IPAddress IP { get; private set; }4. public bool IPUseDHCP { get; private set; }5. //...6. public IPConfig()7. {8. this.IP = IPAddress.None;9. this.IPUseDHCP = false;10. }11. public IPConfig(string IPstr):this()12. {13. try14. {15. this.IP = IPAddress.Parse(IPstr);16. }17. catch (Exception)18. { }19. }20. }21. public class Profile22. {23. public string Name { get; private set; }24. public ObservableCollection<IPConfig> IPC { get; private set; }25. public Profile() {this.IPC = new ObservableCollection<IPConfig>();}26. public Profile( string name )27. {28. = name;29. this.IPC = new ObservableCollection<IPConfig>();30. }31. public Profile(string name, IPConfig ipc)32. {33. = name;34. this.IPC = new ObservableCollection<IPConfig>();35. this.IPC.Add(ipc);36. }37. }38. public ObservableCollection<Profile> _profiles = new ObservableCollection<Profile>();对数据源只要提供{Binding},然后在程序中设置DataContext来实现绑定。
DevexpressWinFormTreeList的三种数据绑定方式(DataSource。。。

DevexpressWinFormTreeList的三种数据绑定⽅式(DataSource。
第⼀种:DataSource绑定,这种绑定⽅式需要设置TreeList的ParentFieldName和KeyFieldName两个属性,这⾥需要注意的是KeyFieldName 的值必须是唯⼀的。
代码如下:private void Form1_Load(object sender, EventArgs e){try{//构建⼀个DataTable数据源DataTable table = new DataTable();table.Columns.Add("parentId");table.Columns.Add("Id");table.Columns.Add("parentName");table.Columns.Add("Name");DataRow row = table.NewRow();row["parentId"] = "";row["Id"] = "*";row["Name"] = "所有颜⾊";table.Rows.Add(row);row = table.NewRow();row["parentId"] = "*";row["Id"] = "1";row["Name"] = "红⾊";table.Rows.Add(row);row = table.NewRow();row["parentId"] = "*";row["Id"] = "2";row["Name"] = "黄⾊";table.Rows.Add(row);row = table.NewRow();row["parentId"] = "*";row["Id"] = "3";row["Name"] = "绿⾊";table.Rows.Add(row);row = table.NewRow();row["parentId"] = "1";row["Id"] = "01";row["Name"] = "粉红⾊";table.Rows.Add(row);row = table.NewRow();row["parentId"] = "2";row["Id"] = "02";row["Name"] = "鹅黄⾊";table.Rows.Add(row);treeList1.ParentFieldName = "parentId";treeList1.KeyFieldName = "Id";treeList1.DataSource = table;treeList1.ExpandAll();}catch (Exception ex){MessageBox.Show(ex.Message);}}private void treeList1_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e){e.State = (e.PrevState == CheckState.Checked ? CheckState.Unchecked : CheckState.Checked);}private void treeList1_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e){try{SetCheckedChildNodes(e.Node, e.Node.CheckState);SetCheckedParentNodes(e.Node, e.Node.CheckState);}catch (Exception ex){MessageBox.Show(ex.Message);}}///<summary>///设置⼦节点的状态///</summary>///<param name="node"></param>///<param name="check"></param>private void SetCheckedChildNodes(TreeListNode node, CheckState check){for (int i = 0; i < node.Nodes.Count; i++){node.Nodes[i].CheckState = check;SetCheckedChildNodes(node.Nodes[i], check);}}///<summary>///设置⽗节点的状态///</summary>///<param name="node"></param>///<param name="check"></param>private void SetCheckedParentNodes(TreeListNode node, CheckState check){if (node.ParentNode != null){bool b = false;CheckState state;for (int i = 0; i < node.ParentNode.Nodes.Count; i++){state = (CheckState)node.ParentNode.Nodes[i].CheckState;if (!check.Equals(state)){b = !b;break;}}node.ParentNode.CheckState = b ? CheckState.Checked : check;SetCheckedParentNodes(node.ParentNode, check);}}运⾏效果图:第⼆种:AppendNode添加节点代码如下:private void LoadTree(){//清空节点treeList1.BeginUnboundLoad();treeList1.ClearNodes();arrayList = new List<TreeListNode>();//绑定部位树树的第⼀层TreeListNode Node = treeList1.Nodes.Add(new object[] { "所有颜⾊", "*"});Node.Tag = "*";arrayList.Add(Node);//绑定第⼆层DataSet ds = SqlHelper.Query(@"select ctc.colorId as ParentNodeID,ctc.childcolorId as NodeID, s as NodeNamefrom C_colorTocolor ctc(nolock)inner join C_color cc(nolock) on ctc.childcolorId=cc.id");if (ds != null && ds.Tables.Count > 0){table = ds.Tables[0];DataRow[] rows = table.Select("ParentNodeID='*'");foreach (DataRow row in rows){TreeListNode tn = treeList1.AppendNode(new object[] { row["NodeName"].ToString(), row["NodeID"].ToString() }, Node.Id); tn.Tag = row["NodeID"].ToString();arrayList.Add(tn);BindNode(row["NodeID"].ToString(), tn);}}treeList1.EndUnboundLoad();treeList1.ExpandAll();}private void BindNode(string nodeId, TreeListNode tn){DataRow[] rows = table.Select("ParentNodeID='" + nodeId + "'");foreach (DataRow row in rows){TreeListNode tns = treeList1.AppendNode(new object[] { row["NodeName"].ToString(), row["NodeID"].ToString()}, tn.Id);tns.Tag = row["NodeID"].ToString();arrayList.Add(tns);BindNode(row["NodeID"].ToString(), tns);}}private void Form2_Load(object sender, EventArgs e){//绑定树LoadTree();}运⾏效果图:第三种:VirtualTreeGetChildNodes虚拟树加载。
treelist 用法 express

treelist 用法 expressTreelist是一种常用的数据结构,它被广泛应用于计算机科学和软件工程领域。
本文将介绍Treelist的用法和表达方式。
Treelist的基本概念Treelist是一种组织数据的树状结构,它由节点组成,每个节点都可以包含子节点。
节点之间通过边连接,形成一棵树。
Treelist常用于存储和操作层次结构的数据,如文件系统、组织架构等。
Treelist的创建和初始化Treelist的创建通常需要调用一个构造函数,并传递相关参数。
在创建Treelist之后,需要进行初始化操作,以便添加或删除节点。
Treelist的节点操作Treelist的节点操作是对树进行修改的关键部分。
常见的节点操作包括:1. 添加节点:通过调用相应的方法,可以向Treelist中添加一个新节点。
这个新节点可以作为根节点或现有节点的子节点。
2. 删除节点:通过调用相应的方法,可以删除Treelist中的一个节点及其所有子节点。
3. 查找节点:通过调用相应的方法,并提供一些关键信息,可以在Treelist中查找特定的节点。
4. 更新节点:通过调用相应的方法,可以更新Treelist中节点的值或属性。
Treelist的遍历Treelist的遍历是用来访问所有节点的过程。
常见的遍历方式有:1. 先序遍历:从根节点开始,按照先访问根节点,然后访问左子树,最后访问右子树的顺序进行遍历。
2. 中序遍历:从根节点开始,按照先访问左子树,然后访问根节点,最后访问右子树的顺序进行遍历。
3. 后序遍历:从根节点开始,按照先访问左子树,然后访问右子树,最后访问根节点的顺序进行遍历。
Treelist的应用场景Treelist的应用场景广泛,下面列举了一些典型的应用场景:1. 文件系统:Treelist可以用来表示文件和文件夹的层次结构,方便文件的管理和查找。
2. 组织架构:Treelist可以用来表示组织内各个部门和员工之间的层次关系,便于管理和沟通。
C# 给TreeView控件绑定数据(ASP可作参考)

C# 给TreeView控件绑定数据(可作参考)本文采用的方法是使用一层for循环给treeview控件绑定数据!C# TreeView控件绑定数据在实际的开发过程中,有时候也会需要用到TreeView这个控件,用到这个控件的时候一般情况下都是与数据库离得数据配合使用的也就是将从数据库读取到的数据绑定到TreeView 控件上。
刚开始接触到这个控件的时候我也不知道如何绑定数据,在网上查了下,都是使用循环来绑定数据的,而且是两层循环。
找了个例子看了一下觉得使用两层循环有点繁琐,于是就自己动手试了下,使用一层循环来绑定数据,完全可以达到目的。
一般情况下TreeView都有1到多个根节点,而每个根节点都有0到多个子节点,这样的数据读取就会涉及到两张表或多张表,所以就需要联表查询。
在联表查询的时候,不同的查询方式肯定对查询的结果有所影响。
我所使用的是LEFT JOIN(左联)查询方式。
先看下最终的效果图:下面简单说下我的思路。
本次的例子涉及到两张表,分别是:A表:CREATETABLE A(aId INTPRIMARY KEY,aName V ARCHAR(30),)A表查询结果如下:B表:CREATETABLE B(bId INT,aId INT ,bName V ARCHAR(30),)B表查询结果如下:很显然,这两张表是有主外键关联的对这两张表联接查询,查询语句如下:SELECTA.aName '分组名称',B.bName '姓名'FROMALEFTJOINBONaId =B.aId查询结果如下:在绑定数据的时候会以A表中的aName这个字段作为TreeView的根节点,以B表中的bName作为子节点。
绑定后的结果如下:从联表查询的结果图来看,其中第四分组和第六分组后面的数据是NULL,也就是没有数据,但是在A表中这两条数据时存在的,所以在绑定数据的时候,在TreeView中的这两个根节点也是存在的,但是这两个根节点都没有子节点。
treelist树形控件

treelist树形控件最近项目中要求用dev 控件的treelist 树形控件。
如下图要求如下:1:选择父节点后,子节点全部打钩;2:选择子节点而不选择父节点,则从当前节点的父节点一直到根节点check框都是半选状态。
具体实现如下:一、treelist绑定的数据源是数据集(dateset)中的表,而且必须给:(当前节点id)KeyFieldName 和(上一级节点id)ParentFieldName 两个属性绑定字段。
二、设置treelist1(名称)中OptionView—ShowCheckBoxes属性为true,则每个节点前面自动增加一个check框。
三、设置OptionBehavior—AllIndeterminateCheckState属性为true,则check框可以出现半选状态。
四、代码1private void treeList1_AfterCheckNode(object sender, DevExpress.X13 CheckNode(e.Node);14 }15 ValidParentIsChecked(e.Node);16 }17else if (e.Node.CheckState == CheckState.Unchecked) 18 { 19if (e.Node.HasChildren)20 {21 ClearNode(e.Node);22 }23//从根节点往下查询是否有打钩的子节点,如果有那么父节点的半选状态不变否则变为不选择状态24 ValidParentNodeIsCanleSel(e.Node);25 }26 }27代码1private void CheckNode(DevExpress.XtraTreeList.Nodes.TreeListNod 代码//////private void ValidParentIsChecked(DevExpress.XtraTreeList.Nodes.TreeListNode node){if (node.ParentNode != null){if(node.ParentNode.CheckState!=CheckState.Checked)node.ParentNode.CheckState = CheckState.Indeterminate; ValidParentIsChecked(node.ParentNode);}}代码private voidValidParentNodeIsCanleSel(DevExpress.XtraTreeList.Nodes. TreeListNode node){bool isSel = false;if (node.ParentNode != null){if (node.ParentNode.CheckState == CheckState.Indeterm inate){//如果父节点的状态为半选状态这更具父节点判断子节点是否打钩isSel = ValidIsHasCheckChildNode(node.ParentNode);if (isSel == false){//如果所有的子节点都没有“选中”那么父节点的状态变为非选中状态node.ParentNode.CheckState = CheckState.Unche cked;}}ValidParentNodeIsCanleSel(node.ParentNode);}}//////判断子节点是否有状态为“选中”状态/// true 表示有 false 表示为没有///。
TreeView树形控件递归绑定数据库里的数据
TreeView树形控件递归绑定数据库⾥的数据TreeView树形控件递归绑定数据库⾥的数据。
第⼀种:性能不好第⼀步:数据库中查出来的表,字段名分别为UNAME(显⽰名称),DID(关联数据),UTYPE(类型)第⼆步:前台代码1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="tree.aspx.cs" Inherits="Maticsoft.Web.tree" %>23 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">45 <html xmlns="/1999/xhtml">6 <head runat="server">7 <title></title>8 <script type="text/javascript">9 function show(msg) {10 alert(msg);11 }12 </script>1314 </head>15 <body>1617 <form id="form1" runat="server">18 <div>19 <asp:TreeView ID="treeT" runat="server">20 </asp:TreeView>212223 </div>24 </form>25 </body>26 </html>第三步:后台代码1using System;2using System.Collections.Generic;3using System.Linq;4using System.Web;5using System.Web.UI;6using System.Web.UI.WebControls;7using System.Data;8using System.Data.SqlClient;910namespace Maticsoft.Web11 {12public partial class tree : System.Web.UI.Page13 {14 Maticsoft.BLL.G_USERS bll = new BLL.G_USERS();15 Maticsoft.Model.G_USERS model = new Model.G_USERS();1617protected void Page_Load(object sender, EventArgs e)18 {19//根节点的条件20 BindTree("8");21 }2223#region绑定⽗节点(第⼀级)24private void BindTree(string pid)25 {2627 DataSet ds = bll.GetList("a.status > -1 and utype=" + pid);28if (ds.Tables[0].Rows.Count > 0)29 {30for (int i = 0; i < ds.Tables[0].Rows.Count; i++)31 {32 TreeNode node = new TreeNode();33 node.Text = ds.Tables[0].Rows[i]["uName"].ToString();34 node.Target = ds.Tables[0].Rows[i]["dID"].ToString();35this.treeT.Nodes.Add(node);36 BindNode(node);37 }38 }39 }40#endregion4142#region绑定⼦节点4344#endregion45private void BindNode(TreeNode nd)46 {47 DataSet ds = bll.GetList("a.status>-1 and a.id=er_id and b.fid=" + Convert.ToString(nd.Target) + " order by b.shorder asc "); 48for (int i = 0; i < ds.Tables[0].Rows.Count; i++)49 {50 TreeNode node = new TreeNode();51 node.Text = ds.Tables[0].Rows[i]["uName"].ToString();52 node.Target = ds.Tables[0].Rows[i]["dID"].ToString();53 nd.ChildNodes.Add(node);5455//判断是否到最底层节点56if (ds.Tables[0].Rows[i]["utype"].ToString() != "0")57 {58 BindNode(node);59 }60 }61 }6263646566 }67 }效果功能图:另⼀种⼀步到位:(⼀次把所有数据放在数据集中,后⾯再查询)1using System;2using System.Collections.Generic;3using System.Linq;4using System.Web;5using System.Web.UI;6using System.Web.UI.WebControls;7using System.Data;8using System.Data.SqlClient;9using System.Data.OleDb;10namespace tree11 {12public partial class tree : System.Web.UI.Page13 {14protected void Page_Load(object sender, EventArgs e)15 {16if (!Page.IsPostBack)17 {18 DataSet ds = GetData();19 DataRow[] dr = ds.Tables[0].Select("utype=8");20 TreeNode node = new TreeNode();21 node.Text = dr[0]["UName"].ToString();22 node.Value = dr[0]["ID"].ToString();23this.TreeView1.Nodes.Add(node);24 BindTree(node, dr[0]["DID"].ToString(), ds);25 }26 }2728private void BindTree(TreeNode Nodes, string pid, DataSet ds)29 {30 DataRow[] dr = ds.Tables[0].Select("fid=" + pid, "shorder asc");31if (dr.Length > 0)32 {33for (int i = 0; i < dr.Length; i++)34 {35 TreeNode node = new TreeNode();36 node.Text = dr[i]["UName"].ToString();37 node.Value = dr[i]["ID"].ToString();38 Nodes.ChildNodes.Add(node);39if(dr[i]["utype"].ToString() !="0")40 BindTree(node, dr[i]["DID"].ToString(), ds);41 }42 }43 }4445private DataSet GetData()46 {47 OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OleDbConnString"]);48 conn.Open();49string osqlstr ="select a.id,a.uname,a.utype,b.id did,b.fid,b.shorder from g_users A,G_DEPT B where a.status>-1 and a.id=er_id "; 5051 OleDbDataAdapter oda = new OleDbDataAdapter(osqlstr, conn);5253 DataSet ods = new DataSet();54 oda.Fill(ods);5556return ods;57 }58 }59 }。
treeselect 绑定方法
treeselect 绑定方法在前端开发中,当需要使用树形结构来展示数据的时候,Treeselect就是一个比较常见的工具,可以方便地实现树形下拉选择框。
Treeselect是一个基于Vue.js的Vue Select 组件,支持本地数据和远程数据的加载以及可自定义模板和搜索功能等。
本文将会介绍Treeselect的绑定方法,它包括三个方面:数据绑定、事件绑定以及属性绑定。
一、数据绑定Treeselect支持两种数据源的绑定:本地数据和远程数据。
1. 本地数据绑定在template中,我们封装树形控件需要的data数据,例如:```vue<template><treeselect :options="options"></treeselect></template><script>export default {data: {options: [{label: 'A', value: 'a', children: [{label: 'A1', value: 'a1'},{label: 'A2', value: 'a2'}]},{label: 'B', value: 'b'},{label: 'C', value: 'c'}]}}</script>```上面的例子中,我们在组件的data中定义了options,options是一个数组,数组内的每个对象代表一个树形节点,包含了label和value属性,并且可以通过children属性来实现树形结构的嵌套。
如果我们需要根据后端返回的数据来动态地生成树形控件,可以通过ajax请求数据并将请求到的数据绑定到Treeselect的options属性中。
ASPxGridView(或ASPxTreeList)动态加载数据源的问题
动态绑定ASPxGridView或ASPxTreeList数据源的刷新问题ASPxGridView或ASPxTreeList在官方Demo中都是利用数据源控件绑定的数据源,这样基本上就可以确定了一个ASPxGridView只能固定的显示一些数据,然而在实际应用中经常有这样的需求,一些表结构类似的数据源想在一个页面展示,根据用户选择来呈现。
例如根据ComboBox的item来选择数据源时,如果把数据源绑定事件写在SelectIndexChanged事件里面,用户点击ComboBox选择不同item会先执行Page_Load事件,然后执行SelectIndexChanged事件,将会显示数据,然后用户点击ASPxGridView内的按钮比如排序、下一页等时,将会只执行Page_Load事件,而Page_Load事件里面没有绑定ASPxGridView,将会导致ASPxGridView没有数据显示。
这是一个比较矛盾的事情,如果绑定事件不在Page_Load里面将会导致点击按钮没有数据,如果放在page_load里面将会使用户选择失效。
当然,还有一个事件是比较可行的,ASPxGridView1_AfterPerformCallback,在页面回发的时候执行。
也就是说在点击ASPxGridView上的按钮后先执行Page_Load事件,然后执行ASPxGridView1_AfterPerformCallback事件,绑定在这个事件里执行,可以保证用户的操作有效。
这时还存在一个问题,就是DataTable的值怎么保存。
执行SelectIndexChanged事件时并不能(也许是我不知道)给AfterPerformCallback传参数,而且ASPxGridView回发的时候并不执行SelectIndexChanged事件,这样DataTable的值就无法更新到ASPxGridView的DataSous中。
考虑用ViewState来进行这个操作。
devexpress treelist的用法 -回复
devexpress treelist的用法-回复DevExpress TreeList是一种用于显示层次结构数据的控件,特别适用于需要展示复杂数据和层次关系的场景。
它提供了丰富的功能和灵活的设置选项,可以帮助开发人员轻松地创建功能强大且易于使用的树形列表。
本文将详细介绍DevExpress TreeList的用法,包括如何创建和绑定数据、设置列、展开和折叠节点、编辑数据等。
第一步:创建DevExpress TreeList控件1. 在Visual Studio中,创建一个新的Windows Forms应用程序项目。
2. 从工具箱中将DevExpress TreeList控件拖放到窗体上。
3. 在窗体的代码文件中,添加对DevExpress组件库的引用。
第二步:绑定数据1. 在TreeList的属性窗口中,找到Data Source属性,点击其右侧的“…”按钮。
2. 弹出的数据绑定对话框中,选择要绑定的数据源类型,如DataSet、DataTable或自定义对象等。
3. 根据选择的数据源类型,配置相应的连接字符串或设置对象。
4. 选择要绑定的数据表或自定义对象,并设置相应的字段。
第三步:设置列1. 在TreeList的属性窗口中,找到Columns集合属性,点击其右侧的“…”按钮。
2. 弹出的列集合编辑器中,点击“添加”按钮来添加新的列。
3. 针对每一列,设置其字段名、显示标题、列宽、数据类型以及其他样式等属性。
4. 可以使用列集合编辑器来调整列的顺序、删除列或编辑列样式等。
第四步:展开和折叠节点1. 通过TreeList的OptionsView属性,可以设置树节点的展开和折叠行为。
2. 设置OptionsView.ShowRoot属性为true,表示显示根节点。
3. 设置OptionsView.ShowChildrenInTreeMode属性为true,表示以树形结构展示子节点。
4. 设置OptionsBehavior.ExpandNodesOnIncrementalSearch属性为true,表示在按键输入时自动展开匹配的节点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
刚好公司项目中使用DevExpress的控件进行系统开发,在开发过程中遇到各种各样的困难,我总结项目中的经验,力所能及的把经验的点滴为大家呈现。
如有不足之处请各位指点。
其实官网也为大家提供了不少好的例子,都是英文。
TreeList 范例1 :如何绑定数据到ASPxTreeList
数据结构
表名: dpt
dptID int
dptname varchar(100)
dptFatherID int
1.新建一个项目
2.新建一个页面treeListDataBind
3.在左边的菜单中拖出TreeList控件
4.数据绑定
Database db = DatabaseFactory.CreateDatabase();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeDataBind();
treeList.ExpandToLevel(2);
}
}
private void TreeDataBind()
{
string Sql="select * from com_Dpt";
DataSet ds= db.ExecuteDataSet(mandType.Text, Sql);
treeList.DataSource =ds.Tables[0];
treeList.KeyFieldName = "dptid";
treeList.ParentFieldName = "dptfatherid";
treeList.DataBind();
}
运行一下。
你可以看到如下效果
DevExpress2011 TreeList 范例2:ASPxTreeList属性设置
1、交替的节点颜色设置
属性—>Styles->AlternationgNode->BackColor
2、网格线与树线条
属性->Settings->GridLines
属性->Settings->ShowTreeLines
3、条件格式
ASPxTreeList允许你对个别数据Cell或者是完整节点设置个性化样式设计,你可以使用HtmlDataCellPrepared or HtmlRowPrepared方法去设置你需要的设置
例如上例中添加
protected void treeList_HtmlDataCellPrepared(object sender,
DevExpress.Web.ASPxTreeList.TreeListHtmlDataCellEventArgs e)
{
if (Object.Equals(e.GetValue("dptname"), "部门1A"))
e.Cell.Font.Bold = true;
}
4、节点
多行选择
1.SettingsSelection.Enabled属性设置为True
2.SettingsSelection.AllowSelectAll属性设置为true
3.SettingsSelection.Recursive 反选属性设置为true
5、数据导出
ASPxTreeList 很容易的使用ASPxTreeListExporter组件导出数据
treeListExporter.WriteRtfToResponse();
treeListExporter.WriteXlsxToResponse();
treeListExporter.WriteXlsToResponse();
treeListExporter.WritePdfToResponse();
6、数据分页
SettingsPager.Mode属性设置为ShowPager.
7、数据统计
AspxTreeList 能使你进行单列或一组节点的计算统计,显示的结果在页脚的单元。
AspxTreeList提供5个嵌入聚集函数(count ,max,min等等)
步骤一把Settings.ShowFooter属性设置为true.
步骤二组页脚显示Settings.ShowGroupFooter属性设置为 true.
<Settings ShowGroupFooter="True"ShowFooter="True"GridLines="Both"/>
<Summary>
<dx:TreeListSummaryItem FieldName="dptname"ShowInColumn=" dptname " SummaryType="Count"/>
</Summary>
如果在代码里写。
private void TreeDataBind()
{
string Sql="select * from com_Dpt";
DataSet ds= db.ExecuteDataSet(mandType.Text, Sql);
treeList.DataSource =ds.Tables[0];
treeList.KeyFieldName = "dptid";
treeList.ParentFieldName = "dptfatherid";
TreeListSummaryItem a = new TreeListSummaryItem();
a.FieldName = "dptName";
a.ShowInColumn = "dptName";
a.SummaryType = DevExpress.Data.SummaryItemType.Count ;
treeList.Summary.Add(a);
treeList.DataBind();
}
DevExpress2011 TreeList 范例3:ASPxTreeList编辑
1、设置编辑、新增删除按钮
2、设置编辑模式
AspxTreeList有如下几种编辑模式:Inline, editForm,EditFormAndDisaplyNode,popupEditForm
3、修改、新增数据
protected void treeList_NodeInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
string dptname = e.NewValues["dptname"].ToString() ;
//以下写数据插入语句
e.Cancel = True;
}
protected void treeList_NodeUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
String keyId As String = e.Keys(0)
string dptname = e.NewValues["dptname"].ToString() ;
//修改数据
e.Cancel=True;
}。