EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

筛选器查找编辑器数据源

在本课程中,您将学习如何过滤查找编辑器显示的数据。该编辑器显示在“详细信息视图”中以获取参考属性。它包含另一个相关类的对象列表。在本课程中,将过滤Contact.Position查找编辑器。为此,将在职位类和部门类之间设置多对多关系。然后,将过滤Contact对象的Detail视图中Position类的对象,仅显示与相应Department相关的Position。

注意

在继续之前,请花一点时间回顾以下课程:

  • 职位部门类之间设置多对多关系。有关详细信息,请参阅设置多对多关系XPO / EF)课程。

    eXpress持久对象

    [DefaultClassOptions]
    [System.ComponentModel.DefaultProperty(nameof(Title))]
     public class Department : BaseObject {
       //...
       [Association("Departments-Positions")]
       public XPCollection<Position> Positions {
          get { return GetCollection<Position>(nameof(Positions)); }
       }
    }
    
    [DefaultClassOptions]
    [System.ComponentModel.DefaultProperty(nameof(Title))]
    public class Position : BaseObject {
          //...
       [Association("Departments-Positions")]
       public XPCollection<Department> Departments {
          get { return GetCollection<Department>(nameof(Departments)); }
       }
    }
    

    实体框架

    public class Position {
        public Position() {
            //...
            Departments = new List<Department>(); 
        }
        //...
        public virtual IList<Department> Departments { get; set; }
    }
    
    public class Department {
        public Department() {
            //...
            Positions = new List<Position>();
        }
        //...
        public virtual IList<Position> Positions { get; set; }
    }
    
  • 调用模型编辑器MySolution.Module项目。导航到BOModel | MySolution.Module.BusinessObjects节点。展开“联系人”子节点,然后选择“位置”子节点。右边的属性定义Contact.Position属性。将DataSourceProperty属性设置为“ Department.Positions”。结果,位置查找编辑器将显示Department.Positions集合。
  • 如果未指定Department.Positions属性,则将DataSourcePropertyIsNullMode属性设置为“ SelectAll”,以显示Contact.Position编辑器中的所有现有对象。

    Tutorial_UIC_Lesson7_1

    注意

    您可以执行上面在代码中定义的任务。请参阅“实现从属引用属性(XPO)”主题。

  • 每次更改Department属性时,都会更改Position属性的数据源。因此,位置属性值的数据源更改后,应将其设置为“ null”(在VB中为“ Nothing”)。要从重新创建的数据源中设置新值,请用以下代码替换Department属性声明。

    eXpress持久对象

    [Association("Department-Contacts", typeof(Department)), ImmediatePostData]
    public Department Department {
       get {return department;}
       set {
          SetPropertyValue(nameof(Department), ref department, value);
          if(!IsLoading) {
             Position = null;
             if(Manager != null && Manager.Department != value) {
                Manager = null;
             }
          }
       }
    }
    
    注意

    无法为实体框架实现类似的功能,因为当前版本的EF不允许检查分配信号从何而来。

  • 运行WinForms或ASP.NET应用程序。指定Department对象的Positions属性。调用联系人详细信息视图。位置查找编辑器的下拉列表包含由部门编辑器指定的分配给部门对象的职位:

    Tutorial_UIC_Lesson7_2

    Tutorial_UIC_Lesson7_2_0

您可以在“主要演示”中查看本课程中所做的更改。MainDemo.Module项目。该MainDemo应用程序安装在%PUBLIC%\文件\ DevExpress的演示19.2 \组件\ eXpressApp框架\ MainDemo默认。可从http://demos.devexpress.com/XAF/MainDemo/在线获得ASP.NET版本。

下一课: 设置属性值

相关文章

转载保留此链接,注明出处