EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

在代码中声明条件外观规则

使用“条件外观”模块,您可以更改不同UI元素的外观和可见性,以及将其禁用/启用。这些元素包括“列表视图”中的属性,内置的“属性编辑器”和“详细信息视图”中的“静态文本”。此外,您可以使动作可见/不可见或启用/禁用。可以在指定条件下应用所需的外观。要将特定外观应用于目标UI元素,请在代码或“应用程序模型”中定义一个规则。在本主题中,您将学习如何在代码中定义外观规则。要了解有关“条件外观”模块和外观规则的一般信息,请参阅“条件外观模块概述”。话题。若要了解如何在应用程序模型中定义外观规则,请参阅“应用程序模型”主题中的“声明条件外观规则”。

一般信息

要在代码中定义外观规则,请使用AppearanceAttribute。此属性在DevExpress.ExpressApp.ConditionalAppearance.v 19.2 .dll程序集的DevExpress.ExpressApp.ConditionalAppearance命名空间中声明。因此,要使用该属性,您将需要添加相应的using(在VB中导入)指令。

应用外观属性时,请使用AppearanceAttribute.Id参数设置规则的ID 。其余规则属性是使用属性的命名参数指定的。

使用外观属性时,首先通过外观规则指定将影响哪些UI元素:将外观属性应用于业务类或业务类属性,并设置其AppearanceItemTypeTargetItems参数。下表说明了几种用例。

受影响的元素 属性目标 AppearanceItemType参数 TargetItems参数
商务舱财产-方法1 财产 查看项目
商务舱财产-方法2 班级 查看项目 所需属性的名称
所有商务舱属性 班级 查看项目 “ *”
几个属性-方法1 班级 查看项目 以分号分隔的属性名称列表
几个属性-方法2 班级 查看项目 “ *”通配符,后跟以分号分隔的排除属性列表。
动作 班级 行动 以分号分隔的动作标识符列表
物业的布局项目 财产 LayoutItem
布局组(简单或选项卡式组) 班级 LayoutItem 在应用程序模型中指定的布局组ID

然后,指定规则的活动范围。为此,请使用以下外观属性参数:

有关这些属性参数的详细信息,请参考“参考帮助”部分中的描述。

外观规则定义的最后一步是指定所需的外观自定义。为此,请使用以下属性参数。

通过外观属性声明的规则反映在应用程序模型中。它们收集在相应的应用程序中BO模型| <类别> | AppearanceRules节点。有关此节点的详细信息,请参阅“应用程序模型”主题中的“声明条件外观规则”。

例子

根据以下示例中演示的规则,价格大于50的产品对象将在列表视图中使用栗色字体颜色显示在红色背景中。

using DevExpress.ExpressApp.ConditionalAppearance;
//...
[Appearance("RedPriceObject", AppearanceItemType = "ViewItem", TargetItems = "*",
    Criteria = "Price>50", Context = "ListView", BackColor = "Red",
        FontColor = "Maroon", Priority = 2)]
public class Product : BaseObject {
    public Product(Session session) : base(session) { }
    public string Name {
        //...
    }
    public decimal Price {
        //...
    }
    public ProductStatus Status {
        //...
    }
    public Category Category {
        //...
    }
}

根据以下示例中演示的规则,当列表视图中的类别属性的值为“ Seafood”时,将以蓝色字体显示。

using DevExpress.ExpressApp.ConditionalAppearance;
//...
[Appearance("CategoryColoredInListView", AppearanceItemType = "ViewItem", TargetItems = "Category",
 Criteria = "Category = 'Seafood'", Context = "ListView", FontColor = "Blue", Priority = 1)]
public class Product : BaseObject {
    public Product(Session session) : base(session) { }
    public Category Category {
        //...
    }
}
[DefaultProperty(nameof(Name))]
public class Category : BaseObject {
    public Category(Session session) : base(session) {}
    public string Name {
        //...
    }
}

根据以下示例中演示的规则,当“类别”属性值为“ Seafood”时,“产品详细信息视图”中“类别”布局项目的标题将以蓝色字体显示。

using DevExpress.ExpressApp.ConditionalAppearance;
//...
public class Product : BaseObject {
    public Product(Session session) : base(session) { }
    [Appearance("CategoryColoredInDetailView", AppearanceItemType = "LayoutItem",
         TargetItems = "Category", Criteria = "Category = 'Seafood'", Context = "DetailView",
             FontColor = "Blue")]
    public Category Category {
        //...
    }
}
[DefaultProperty(nameof(Name))]
public class Category : BaseObject {
    public Category(Session session) : base(session) {}
    public string Name {
        //...
    }
}

根据以下示例中演示的规则,当“类别”属性设置为“海鲜”时,“产品详细信息视图”中的“ ProductParameters”布局组标题将以蓝色字体显示。

using DevExpress.ExpressApp.ConditionalAppearance;
//...
[Appearance("LayoutGroupColoredInDetailView", AppearanceItemType = "LayoutItem",
 TargetItems = "ProductParametersLayoutGroup", Criteria = "Category = 'Seafood'",
 Context = "Product_DetailView", FontColor = "Blue")]
public class Product : BaseObject {
    public Product(Session session) : base(session) { }
    public string Name {
        //...
    }
    public decimal Price {
        //...
    }
    public ProductStatus Status {
        //...
    }
    public Category Category {
        //...
    }
}
[DefaultProperty(nameof(Name))]
public class Category : BaseObject {
    public Category(Session session) : base(session) {}
    public string Name {
        //...
    }
}

根据以下示例中演示的规则,当在所有产品视图中将“状态”属性设置为“非活动”时,将隐藏“产品的停用操作”。请注意,此规则中指定的动作ID包含类名称(“ Product.Deactivate”),因为使用ActionAttribute声明了停用动作。如果在控制器中声明了动作,请指定其ID,但不要使用类名,例如“ Delete”或“ Unlink”。

using DevExpress.ExpressApp.ConditionalAppearance;
//...
[Appearance("ActionVisibility", AppearanceItemType = "Action",
    TargetItems = "Product.Deactivate",
        Criteria = "Status = 'Inactive'", Context = "Any", Visibility = ViewItemVisibility.Hide)]
public class Product : BaseObject {
    public Product(Session session) : base(session) { }
    public ProductStatus Status {
        //...
    }   
    [Action(PredefinedCategory.RecordEdit, Caption = "Deactivate Product...", AutoCommit = true,
     TargetObjectsCriteria = "Status = 'Active'",
      SelectionDependencyType = MethodActionSelectionDependencyType.RequireSingleObject)]
    public void Deactivate() {
        Status = ProductStatus.Inactive;
    }
}

根据以下示例中演示的规则,当RuleMethod返回true时,列表视图中的Product对象将以黑色字体显示在绿色背景中。

using DevExpress.ExpressApp.ConditionalAppearance;
//...
public class Product : BaseObject {
    public Product(Session session) : base(session) { }
    public decimal Price {
        //...
    }
    public ProductStatus Status {
        //...
    }
    [Appearance("RuleMethod", AppearanceItemType = "ViewItem", TargetItems = "*", Context = "ListView",
     BackColor = "Green", FontColor = "Black")]
    public bool RuleMethod() {
        if (Price < 10 && Status == ProductStatus.Active) {
            return true;
        }
        else {
            return false;
        }
    }
}
提示

DevExpress代码示例数据库(http://www.devexpress.com/example=E3595)中提供了完整的示例项目。

XAF随附的FeatureCenter演示中演示了更多示例。默认情况下,此演示位于%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ FeatureCenter文件夹中。

相关文章

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