C# DevExpress XtraTreeList数据绑定
₯想了好几个钟,终于还是理明白了这个控件该怎么绑定数据了,先做个记录,免得下次忘了,嘿嘿~
现在有两种方式可选:
1、通过List<自定义类>
(1)新建一个包含id,parentId,nodeText的类,如TreeListParams:
class TreeListParams
{
public string id { get; set; }
public string parentId { get; set; }
public string nodeText { get; set; }
}
(2)将查询到的数据循环存入List,设置插入XtraTreeList的TreeListColumn的属性,并设置XtraTreeList的DataSource为List:
DataTable dt = 【数据库查询到的数据】;
List<TreeListParams> tlpl = new List<TreeListParams>();
foreach (DataRow dr in dt.Rows)
tlpl.Add(new TreeListParams() { id = dr["id"].ToString(), parentId = dr["parentId"].ToString()});
TreeListColumn tlc = new TreeListColumn()
{
Name = "tlc1",
Caption = "xxx", //列头,此处隐藏,设不设都可以
FieldName = "nodeText", //此处因为我的数据源只有两列,其中id列要作为树结点的显示文本
VisibleIndex = 0,
Visible = true,
};
treeList1.Columns.Clear();
treeList1.Columns.AddRange(new TreeListColumn[] { tlc });
treeList1.KeyFieldName = "id";
treeList1.ParentFieldName = "parentId";
treeList1.DataSource = tlpl;
treeList1.RefreshDataSource();
treeList1.ExpandAll();
2、通过DataTable
DataTable dt = 【数据库查询到的数据】;
TreeListColumn tlc = new TreeListColumn()
{
Name = "tlc1",
Caption = "xxx", //列头,此处隐藏,设不设都可以
FieldName = "id", //此处因为我的数据源只有两列,其中id列要作为树结点的显示文本
VisibleIndex = 0,
Visible = true,
};
treeList1.Columns.Clear();
treeList1.DataSource = dt;
treeList1.KeyFieldName = "id";
treeList1.Columns.AddRange(new TreeListColumn[] { tlc });
treeList1.ParentFieldName = "parentId";
treeList1.ExpandAll();
两种方式得到的结果:
两种方式一比较,还是方式二直接使用DataTable比较方便,省去了循环搬数据的步骤。