EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

XPO中的集合属性

以下示例说明了如何在XPO持久性类中实现集合属性

不同的集合属性在UI中具有不同的操作。您可以在模型编辑器中管理NewDeleteLinkUnlink Action的可见性。列表视图的设置AllowNewAllowDeleteAllowLink,或AllowUnlink属性为隐藏这些操作。

注意

请参考FeatureCenter演示以查看有关如何实现集合属性的示例(请参见%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ FeatureCenter \ CS \ FeatureCenter.Module \ PropertyEditors \ CollectionPropertiesObject.cs)。

XPCollection类型的集合

[Association("CollectionProperties-AssociatedObject")]
public XPCollection<AssociatedObject> Association {
    get { return GetCollection<AssociatedObject>(nameof(Association)); }
}

有关XPO中关联集合的更多信息,请参见“代码与UI中的持久对象之间的关系”。

XPCollection类型的聚合集合

[Association("CollectionProperties-AggregatedObject"), Aggregated]
public XPCollection<AggregatedObject> AggregatedAssociation {
    get { return GetCollection<AggregatedObject>(nameof(AggregatedAssociation)); }
}

有关XPO中聚合集合的更多信息,请参见“代码和UI中的持久对象之间的关系”。

与持久对象无关的集合

如果集合不是关联的一部分,则使用对象填充此集合,并实施用于管理它们的自定义逻辑。要在UI中隐藏或显示“新建”和“链接”或“删除取消链接”操作,请使用CollectionOperationSet属性装饰collection属性,并指定AllowAddAllowRemove参数。

XPCollection类型的集合

新的删除链接取消链接操作都可以在此集合。我们建议使用此集合来显示对象,而不要在UI中对其进行编辑。在下面的代码片段中,CollectionOperationSetAllowAddAllowRemove参数设置为false以拒绝用户更改UI中的集合:

private XPCollection<NoAssociationObject> noAssociation;
[CollectionOperationSet(AllowAdd = false, AllowRemove = false)]
public XPCollection<NoAssociationObject> NoAssociation {
    get {
        if(noAssociation == null) {
            noAssociation = new XPCollection<NoAssociationObject>(Session);
        }
    return noAssociation;
    }
}

您可以使用Criteria属性来过滤集合对象,或者将LoadingEnabled属性设置为false并将对象添加到集合中。订阅集合的CollectionChanged事件,以实现NewDeleteLinkUnlink Actions所需的逻辑。

BindingList类型的集合

新的删除链接取消链接操作都可以在此集合。

private BindingList<NoAssociationObject> persistentBindingList;
public BindingList<NoAssociationObject> PersistentBindingList {
  get {
    if(persistentBindingList == null) {
      persistentBindingList = new BindingList<NoAssociationObject>();
      foreach(NoAssociationObject obj in NoAssociation) {
        persistentBindingList.Add(obj);
      }
    }
    return persistentBindingList;
  }
}

订阅集合的ListChanged事件,以实现NewDeleteLinkUnlink Actions所需的逻辑。

具有非持久对象的BindingList集合

新的删除链接取消链接,如果它的主人对象是一个持久化对象操作不适用于这个集合。如果主对象是非持久对象,则“新建”和“删除操作”可用。要激活链接取消链接,请将LinkUnlinkController.RequirePersistentType属性设置为false并处理CustomCreateLinkView事件。

private BindingList<SomeObject> nonPersistentObjectBindingList;
private void EnsureNonPersistentObjectBindingList() {
    if(nonPersistentObjectBindingList == null) {
        nonPersistentObjectBindingList = new BindingList<SomeObject>();
        // ...
    }
}
public BindingList<SomeObject> NonPersistentBindingList {
  get {
    EnsureNonPersistentObjectBindingList();
    return nonPersistentObjectBindingList;
  }
}

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