サーチ…


前書き

このトピックでは、PXStringListまたはPXIntList属性から継承されたフィールド属性を変更する方法を学習します。この実証されたアプローチは、基本Acumatica ERP製品の機能を破らず、必要に応じて最小限のメンテナンスを必要とし、カスタマイズをAcumaticaの新しいバージョンにアップグレードします。

備考

上記のすべてのサンプルでは、両方の変更作ら_AllowedValues_AllowedLabels配列を。ドロップダウンアイテムのラベル(外部値)のみを変更する場合は、翻訳辞書の使用を検討してください。翻訳辞書の詳細については、 Acumatica ERP Documentationを参照してください。

婚姻状態の変更

この例では、 連絡先フォーム(CR302000)にある婚姻ステータスドロップダウンリストを変更します。 ここに画像の説明を入力

新しい項目をPXStringListAttribute継承に追加するには

PXStringListまたはPXIntList属性から継承した属性内でハードコードされたドロップダウンアイテムを拡張する最適な方法は、カスタムフィールド属性のコンストラクタの_AllowedValuesおよび_AllowedLabels配列のサイズを大きくすることです。

[PXLocalizable(Messages.Prefix)]
public static class MaritalStatusesMessages
{
    public const string CommonLaw = "Living common law";
    public const string Separated = "Separated (not living common law)";
    public const string DivorcedNoCommonLaw = "Divorced (not living common law)";
    public const string NeverMarried = "Never Married";
}

public class MaritalStatusesCst1Attribute : MaritalStatusesAttribute
{
    public const string CommonLaw = "L";
    public const string Separated = "P";
    public const string NeverMarried = "N";

    public MaritalStatusesCst1Attribute()
    {
        Array.Resize(ref _AllowedValues, _AllowedValues.Length + 3);
        _AllowedValues[_AllowedValues.Length - 3] = CommonLaw;
        _AllowedValues[_AllowedValues.Length - 2] = Separated;
        _AllowedValues[_AllowedValues.Length - 1] = NeverMarried;
        Array.Resize(ref _AllowedLabels, _AllowedLabels.Length + 3);
        _AllowedLabels[_AllowedLabels.Length - 3] = MaritalStatusesMessages.CommonLaw;
        _AllowedLabels[_AllowedLabels.Length - 2] = MaritalStatusesMessages.Separated;
        _AllowedLabels[_AllowedLabels.Length - 1] = MaritalStatusesMessages.NeverMarried;
    }
}

上記のサンプルでは、 _AllowedValuesおよび_AllowedLabels配列のサイズを増やして、3つの追加アイテムを[ 婚姻状態]ドロップダウンリストに追加しました。 _AllowedValues配列に格納された内部値は、DACフィールドに割り当てられ、データベースに保存され、 _AllowedValues配列の外部値はUIの内部値を表します。

結果をテストするには、Contact DAC拡張で、 MaritalStatusフィールドにMaritalStatusesCst1Attributeを装飾しMaritalStatusesCst1Attribute

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst1]
    public string MaritalStatus { get; set; }
}

今、 婚姻状態のドロップダウンリストに7つの項目があります:

ここに画像の説明を入力

PXStringListAttribute継承で宣言された項目を削除するには

PXStringListまたはPXIntList属性から継承した属性内にハードコードされた特定のドロップダウンアイテムを削除するには、カスタムフィールド属性のコンストラクタで_AllowedValuesおよび_AllowedLabels配列のサイズを小さくする必要があります。

public class MaritalStatusesCst2Attribute : MaritalStatusesCst1Attribute
{
    public MaritalStatusesCst2Attribute()
    {
        string[] allowedValues = new string[_AllowedValues.Length - 1];
        string[] allowedLabels = new string[_AllowedLabels.Length - 1];
        Array.Copy(_AllowedValues, 1, allowedValues, 0, _AllowedValues.Length - 1);
        Array.Copy(_AllowedLabels, 1, allowedLabels, 0, _AllowedValues.Length - 1);
        _AllowedValues = allowedValues;
        _AllowedLabels = allowedLabels;
    }
}

上記のサンプルでは、 _AllowedValuesおよび_AllowedLabels配列のサイズを_AllowedValues_AllowedLabels 婚姻状況]ドロップダウンリストから[ 単一項目]を削除しました。

結果をテストするには、Contact DACエクステンションで、 MaritalStatusフィールドにMaritalStatusesCst2Attributeを装飾しMaritalStatusesCst2Attribute

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst2]
    public string MaritalStatus { get; set; }
}

現在、 婚姻ステータスドロップダウンリストには、オリジナル3件とカスタム3件の6つの項目しかありません。

ここに画像の説明を入力

PXStringListAttribute継承で宣言された項目を置き換える

PXStringListまたはPXIntList属性から継承した属性内にハードコードされた特定のドロップダウンアイテムを置き換えるには、カスタムフィールド属性のコンストラクタの_AllowedValuesおよび_AllowedLabels配列の適切な値を更新する必要があります。

public class MaritalStatusesCst3Attribute : MaritalStatusesCst2Attribute
{
    public const string DivorcedNoCommonLaw = "V";

    public MaritalStatusesCst3Attribute()
    {
        _AllowedValues[Array.IndexOf(_AllowedValues, Divorced)] = DivorcedNoCommonLaw;
        _AllowedLabels[Array.IndexOf(_AllowedLabels, Messages.Divorced)] = MaritalStatusesMessages.DivorcedNoCommonLaw;
    }
}

上の例では、 _AllowedValues_AllowedLabels配列で、 D - 離婚項目をV - 離婚(生きた慣習ではない)にそれぞれ_AllowedLabelsました。これにより、ドロップダウンアイテムの内外の値が置き換えられます。

結果をテストするには、Contact DAC拡張で、 MaritalStatusフィールドをMaritalStatusesCst3Attributeます。

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst3]
    public string MaritalStatus { get; set; }
}

婚姻ステータスドロップダウンリストには、元の2つ、習慣3つ、置き換え1つの6つのアイテムしかありません:

ここに画像の説明を入力



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow