• Devexpress TreeList控件绑定显示父子节点对像


    今天一位同事咨询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"); }
            }
        
    }    

     

    1 //...省略部分     
    2 
    3             this.treeList1.KeyFieldName = "Id";
    4             this.treeList1.Name = "treeList1";
    5             this.treeList1.ParentFieldName = "ParentId";
    6 
    7 //...省略部分        

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

     1  public class Item:XPBaseObject
     2  {
     3 
     4 //...省略
     5 
     6     
     7         [NonPersistent]
     8        public int ParentId
     9        {
    10            get { return ParentItem == null ? 0 : this.ParentItem.Id; }
    11        }
    12 
    13 
    14 //...省略
    15 
    16     
    17 }    

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

  • 相关阅读:
    11g 配置 dgmgrl 以及报错 DataGuard ORA-00313,
    java三种匿名的方式开启线程
    java 四种方式实现字符流文件的拷贝对比
    java中过滤查询文件
    通过Java实现斗地主
    java中Map的entrySet 和keySet的使用
    python3列表推导式和生成器。
    python的特殊方法总结
    python3 定义向量运算
    python3模拟扑克牌
  • 原文地址:https://www.cnblogs.com/linkbiz/p/5207187.html
Copyright © 2020-2023  润新知