XAF中实现树形属性或树形编辑

本文介绍了一个使用 DevExpress Xpo 实现的员工和部门类模型,包括类的定义、属性设置及部门间的父子关系管理。通过示例代码展示了如何在 C# 中创建并维护这些业务对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1.在列表编辑器中

2.在属性编辑器中

3.实现代码如下

ExpandedBlockStart.gif代码
using System;
using System.ComponentModel;

using DevExpress.Xpo;
using DevExpress.Data.Filtering;

using DevExpress.ExpressApp;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Validation;

namespace XSolution1.Module
{
   [DefaultClassOptions]
    
public class Employee : BaseObject
    {
        
public Employee(Session session) : base(session) { }

        
private string _Name;
        
public string Name
        {
            
get
            {
                
return _Name;
            }
            
set
            {
                SetPropertyValue(
"Name"ref _Name, value);
            }
        }

        
private string _Note;
        
public string Note
        {
            
get
            {
                
return _Note;
            }
            
set
            {
                SetPropertyValue(
"Note"ref _Note, value);
            }
        }

        
private Department _Department;
        
public Department Department
        {
            
get
            {
                
return _Department;
            }
            
set
            {
                SetPropertyValue(
"Department"ref _Department, value);
            }
        }
    }

}

 

 

ExpandedBlockStart.gif代码
using System;
using System.ComponentModel;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Validation;
using DevExpress.ExpressApp.Localization;
using DevExpress.Persistent.Base.General;
namespace XSolution1.Module

    [DefaultClassOptions]   
    
public class Department : BaseObject, IHCategory
    { 
        
private string name; 
        
private Department parent; 
        
private void CheckCircularReferences(Department obj) 
        { Department currentObj 
= obj; while (currentObj != null
        {
            
if (currentObj == this) { throw new UserFriendlyException(ExceptionId.CircularReference);
            } currentObj 
= currentObj.Parent; } } 
        
public Department(Session session) : base(session) { } 
        
public Department(Session session, string name) : this(session) { this.name = name; } 
        [Association(
"DepartmentParent-DepartmentChild")]        
        
public XPCollection<Department> Children 
        {
            
get { return GetCollection<Department>("Children"); }
        } 
        [Persistent, Association(
"DepartmentParent-DepartmentChild")]        
        
public Department Parent 
        { 
            
get { return parent; } 
            
set {
                  
if (!IsLoading) 
                  { 
                      CheckCircularReferences(value);
                  }
                parent 
= value; OnChanged("Parent");
            }
        } 
        
public string Name 
        { 
            
get { return name; }
            
set { name = value; OnChanged("Name"); } 
        } 
        IBindingList ITreeNode.Children 
        {
            
get { return Children as IBindingList; }
        } 
        ITreeNode IHCategory.Parent 
        { 
            
get { return Parent as IHCategory; } 
            
set { Parent = value as Department; }
        }
        ITreeNode ITreeNode.Parent 
        { 
            
get { return Parent as ITreeNode; }
        }
    }
}

 

转载于:https://www.cnblogs.com/Tonyyang/archive/2010/06/22/1762819.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值