acumatica
ドロップダウンリストの項目の変更
サーチ…
前書き
このトピックでは、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つのアイテムしかありません: