2017-02-01 4 views
2

[Manage Customers]ページで[Certification Type]というカスタムフィールドを作成し、データアクセスクラスで[PXDefault]とマークして必要に応じて設定しました。問題は、BAAccountクラス、ベンダー、従業員および連絡先を使用するすべての画面で必要になることです。ベンダー、雇用者または連絡先ではなく、顧客に必要なフィールドを作成する方法はありますか?カスタマーに必要なフィールド

答えて

3

PXDefault属性を無効にする必要がある各画面のグラフを拡張することで、拡張フィールドを画面で上書きできます。

public class VendorMaintExt : PXGraphExtension<VendorMaint> 
{ 
    [PXMergeAttributes(Method = MergeMethod.Merge)] 
    [PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]  
    protected virtual void BAccount_CertificationType_CacheAttached(PXCache sender) 
    { 
    } 
} 
2

最初にあなたが望むことをする方法は2つあります。

1)カスタムフィールドをBAcct DACからCustomer DACに移動します。 「顧客」には、BAcctのフィールドとセカンダリの「得意先」テーブルが含まれています。この

よう

何か:この方法は、あなたがDACから[PXDefault]属性を削除し、キャッシュ添付イベントを使用してCustomerMaintの拡張クラスに追加)[PXDefault]属性に

2を残すことができます

[PXDefault] 
{rest of your field attributes] 
protected virtual void BAcct_{yourfield}_CacheAttached(PXCache sender) 
{ 
} 

これを行うと、顧客のメンテナンス画面では必須フィールドになりますが、他の場所ではオプションです。フィールドでデータベース側からのNULL値が許可されていることを確認してください。

注:必須フィールドがでマークされて

:あなたはすべての値を再定義する必要はありません5.0以上で、代わりにあなたは他の回答に加えて次の属性

[PXMergeAttributes(Method = MergeMethod.Merge)] 
+0

ジェフ、私が試した[PXDBString(255)] [PXDefault] [PXUIField(のDisplayName = "CertificationType"、必須=真)] [PXStringList(新しい文字列[] {"EMail"、 "Paper"、 "Both"、 "None"}、 新しい文字列[] {"Email"、 "Paper"、 "Both"、 "None"}、MultiSelect = false)] 保護された仮想void Customer_UsrCertType_CacheAttached(PXCache送信側) { } – GeorgeM

+0

\tイベントを購読できませんでしたPX.Objects.AR.CustomerMaint_ExtensioグラフPX.Objects.AR.CustomerMaintのn :: BAccount_UsrCertType_CacheAttached。 メソッドシグネチャはイベントハンドラのように見えますが、 ですが、自動初期化キャッシュのリストにキャッシュBAccountが見つかりませんでした。 未使用のイベントハンドラをコードから削除します。 – GeorgeM

+0

上記のコードを変更すると、バーチャルボイドがBAccount_UsrCertTypeに変更されました。私はキャリッジリターンの入力を続けています。私が望む前に投稿してから、編集時間が5分を超えます。混乱して申し訳ありません – GeorgeM

0

を使用することができますフォーム上のアスタリスク(*)を使用して、値を指定する必要があることをリーダーに知らせます。 アスタリスク付き必須フィールドのコントロールにマークを付けるには、PXUIField属性のRequiredプロパティをtrueに設定する必要があります。

[PXCustomizeBaseAttribute(typeof演算(PXUIFieldAttribute)、 "必要"、真)]

関連する問題