EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:更改用于FullAddress和FullName属性的格式

有在与该提供的地址和个人业务类FullAddress和全名性商业类库。这些性质是可计算的。FullAddress属性表示由Country.Name,StateProvince,City,Street和ZipPostal属性值串联而成的字符串。FullName属性由FirstName,MiddleName和LastName属性值的串联形成。实现了FullAddress和FullName属性,以便您可以更改项目的串联顺序。本主题详细介绍如何更改此顺序。在实现类似的业务类属性时,可以使用此技术。

下图演示了如何计算FullAddress和FullName属性。

完整地址

全名

若要格式化FullAddress和FullName属性,请使用辅助对象ObjectFormatter类的ObjectFormatter.Format方法。在该方法中,将根据其生成属性值的格式作为参数。通过Address类的FullAddressFormat属性指定为FullAddress属性传递的格式。Person类的FullNameFormat属性指定为FullName属性传递的格式。请注意,FullAddress和FullName属性是非持久的计算属性。因此,它们需要为其创建持久别名以支持在服务器模式下进行排序(请参阅CollectionSourceBase.DataAccessMode)。)。为此,还有其他FullNamePersistentAlias和FullAddressPersistentAlias属性。这些属性用于创建持久别名。

默认情况下,FullAddressFormat属性设置为Address类的defaultFullAddressFormat常量,该常量如下:“ {Country.Name}; {StateProvince}; {City}; {Street}; {ZipPostal}”。该FullAddressFormatPersistentAlias属性设置为Address类defaultFullAddressPersistentAlias不变,这是如下: “CONCAT(Country.Name,StateProvince,市,街,ZipPostal)”。若要更改这些属性值,请使用SetFullAddressFormat方法(SetFullNameFormat对于Person类)。这些方法是静态的,因此您可以在解决方案中的任何位置调用它们。例如,您可以在配置文件中指定所需的格式,并在模块的构造函数中读取其值。此外,重写模块的ModuleBase.CustomizeTypesInfo方法,并通过静态CalculatedPersistentAliasHelper.CustomizeTypesInfo方法处理CalculatedPersistentAlias属性。

<configuration>
    <appSettings>
        <add key="FullAddressFormat" value="{Country.Name} {City} {Street}" />
        <add key="FullAddressFormatPersistentAlias" value="concat(Country.Name, City, Street)" />
        <!-- ... -->
    </appSettings>
</configuration>
using DevExpress.Persistent.BaseImpl;
using System.Configuration;
//...
public sealed partial class MainDemoModule : ModuleBase {
    static MainDemoModule() {
        Address.SetFullAddressFormat(ConfigurationManager.AppSettings["FullAddressFormat"], 
            ConfigurationManager.AppSettings["FullAddressFormatPersistentAlias"]);
    }
    public override void CustomizeTypesInfo(ITypesInfo typesInfo) {
        base.CustomizeTypesInfo(typesInfo);
        CalculatedPersistentAliasHelper.CustomizeTypesInfo(typesInfo);
    }
    //...
}

使用指定的格式格式化FullAddress属性后,括号中的属性名称将替换为当前对象的属性值(请参见上图)。

类似于Address类的FullAddressFormat属性,Person类的FullNameFormat属性设置为defaultFullNameFormat常量,该常量为:“ {FirstName} {MiddleName} {LastName}”。所述FullNamePersistentAlias属性被设置为defaultFullNamePersistentAlias恒定,这是以下情况:“CONCAT(姓,中间名,姓氏)”。由于SetFullNameFormat方法是静态的,因此可以在需要时随意调用它。例如,您可以使用配置文件中指定的值,如上面的代码所示。

注意

在Main Demo中,您可以如上所述在通用模块的构造函数中为FullName属性设置自定义格式。

在实现其值需要设置格式的业务类属性时,请引入诸如FullAddressFormat和FullNameFormat之类的静态属性,以便使用您的业务类的任何人都可以修改格式。以下代码可以用作示例:

public class SampleAddress : BaseObject {
    private const string defaultFullAddressFormat = "{Country.Name}; {StateProvince};"  
       " {City}; {Street}; {ZipPostal}";
    private static string fullAddressFormat = defaultFullAddressFormat;
    public static string FullAddressFormat {
        get { return fullAddressFormat; }
        set {
            fullAddressFormat = value;
            if(string.IsNullOrEmpty(fullAddressFormat)) {
                fullAddressFormat = defaultFullAddressFormat;
            }
        }
    }
    public string FullAddress {
        get {
            return ObjectFormatter.Format(fullAddressFormat, this, 
               EmptyEntriesMode.RemoveDelimiterWhenEntryIsEmpty );
        }
    }
}
相关文章

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