程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Devexpress TreeList控件綁定顯示父子節點對像,devexpresstreelist

Devexpress TreeList控件綁定顯示父子節點對像,devexpresstreelist

編輯:C#入門知識

Devexpress TreeList控件綁定顯示父子節點對像,devexpresstreelist


今天一位同事咨詢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 控件中綁定的字段都是需要在對像類中要存在的屬性才可以綁定,不能光在數據庫中存在字段就可以,如果屬性不存在可以寫一個只讀並且不用存入數據庫的屬生用於綁定專用。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved