今天一位同事咨询Devexpress TreeList控件绑定自动显示父子节点对像,但结果是不会显示带父子节点关系,而是将所有的节点作为父节点显示出来了,对像类的代码如下

 public class Item:XPBaseObject
{
public Item()
: base()
{
} public Item(Session session)
: base(session)
{
} [Key(true)]
public int Id{ get;set; } public string Name{get;set;} [Association("SubItems"),Persistent("ParentId")]
public Item ParentItem; [Association("SubItems", typeof(Item)), Aggregated]
public XPCollection<Item> SubItems
{
get { return GetCollection<Item>("SubItems"); }
} }
 //...省略部分     

             this.treeList1.KeyFieldName = "Id";
this.treeList1.Name = "treeList1";
this.treeList1.ParentFieldName = "ParentId"; //...省略部分

实际XPO在数据库中自动生成的数据结构也是符合我们设计的要求的,填写的数据什么地都是正确的,但结果就是不会按照父子节点关系来显示。最后在之前的代码中找到不一样的地方,就是this.treeList1.ParentFieldName = "ParentId"; 这里的字段名在对像类中没有显示声明一个属性导致,虽然在属性ParentItem里有指定字段名ParentId但这里仅仅用于将外键关系存入ParentId这个字段而已。TreeList控件并不会智能地读取该值作为父节点的主键值,还是得要在对像类中声明一个只读的ParentId属性才能解决这个问题,见下面的代码:

  public class Item:XPBaseObject
{ //...省略 [NonPersistent]
public int ParentId
{
get { return ParentItem == null ? : this.ParentItem.Id; }
} //...省略 }

总结:TreeList 控件中绑定的字段都是需要在对像类中要存在的属性才可以绑定,不能光在数据库中存在字段就可以,如果属性不存在可以写一个只读并且不用存入数据库的属生用于绑定专用。

Devexpress TreeList控件绑定显示父子节点对像的更多相关文章

  1. DevExpress TreeList控件的复选框

    作者:jiankunking 出处:http://blog.csdn.net/jiankunking TreeList控件能够同一时候显示树结构和其它数据列,即在一个列上建立父子关系展开或收缩,同一时 ...

  2. Devexpress TreeList控件使用

    增加显示列treeList1.Columns.Add(new TreeListColumn {Caption = "城市", FieldName = "Name" ...

  3. Devexpress treelist 控件属性大全

    属性列表 1.OptionsSelection: EnableAppearanceForcusedCell:选中的Cell的Appearance设置是否可用.默认为True: EnableAppear ...

  4. DevExpress之TreeList控件用作导航使用说明

    最近项目用的是DEV界面框架, 由于各控件属性太多,以免遗忘.所以做个笔录.也方便有这方面需求的网友交流学习.下面开始讲解具体实现步骤. 一.先布局,设置相关属性. 1.首先到工具箱拖一个 TreeL ...

  5. .NET Core 3时代DevExpress Winforms v19.2增强TreeList控件

    DevExpress Winforms Controls内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpre ...

  6. WinForm控件TreeView 只部分节点显示 CheckBox

    WinForm控件TreeView 只部分节点显示  CheckBox 用过asp.net的应该知道,要在treeview中实现上述功能可以使用ShowCheckBox 属性指定那些节点显示check ...

  7. DevExpress的DateEdit控件正确显示日期的周名称

    DevExpress 的控件相当好看而且很好用,但 DateEdit 在是显示周名时,只能显示一个“星”字. 以下是解决方法,此解决方法不需修改其源码,所以免去了重新编译的必要,可直接使用其发布的标准 ...

  8. DevExpress相关控件中非字符数值居左显示

    用了这么长时间的DevExpress控件,今天遇到俩问题. 一个是从头到尾看了一遍编译成功的例子,只能感慨,功能太丰富了,自己所用的不过是冰山一角.有些自己一直想实现的效果,原来早就有现成的可用,汗颜 ...

  9. DevExpress中 TreeList控件的常规配置

    //以下为TreeList控件样式相关设置 this.treelist_SystemCfg.BackColor = Color.Transparent; this.treelist_SystemCfg ...

随机推荐

  1. MySQL客户端工具推荐

    PhpMyAdmin 傻瓜级的 Web 页面管理器,无需到处安装,只需一台支持 PHP 运行环境的服务器 功能上一般只限数据表的增删改查 在一台安装了phpmyadmin的机器上是可以连其它服务器上的 ...

  2. 自定义 ActionBar 标题与菜单中的文字样式

    自定义标题文字样式 标题样式是 ActionBar 样式的一部分,所以要先定义 ActionBar 的样式 <style name="AppTheme" parent=&qu ...

  3. Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList<T>

    Delphi 2009 新增了泛型容器单元: Generics.Collections, 同时还有一个 Generics.Defaults 单元做支持. Generics.Collections 包含 ...

  4. spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法

    Spring 中配置扫描器 <!-- springmvc的扫描器--> <context:component-scan base-package="com.beifeng. ...

  5. volicity 模板类,java操作配置文件

    import java.io.StringWriter; import java.util.HashSet; import java.util.Iterator; import java.util.M ...

  6. HDU4888 Redraw Beautiful Drawings(最大流唯一性判定:残量网络删边判环)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4888 Description Alice and Bob are playing toget ...

  7. Windows RC版、RTM版、OEM版、RTL版、VOL版的区别

    Windows 版本号标识区别一览表: 版本缩写 版本全称 版本意义 Alpha版 Alpha 内部测试版,一般不会向外部发布,会有很多Bug,只供测试人员使用,如果您看到Alpha版本了,一般来讲对 ...

  8. iOS学习14之OC NSNumber + NSValue

    1.NSNumber 数值类. 作用:实现基本数据类型与OC对象类型的相互转化. 1> NSNumber创建对象 // 初始化方法 NSNumber *num1 = [[NSNumber all ...

  9. django 安装

    git clone https://github.com/django/django.git 或者到django的官网下载 然后 python setup.py install

  10. Android Acitivity 生命周期

    Activity的生命周期: (1)启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态. (2)当前Activi ...