2017-12-13 8 views
0

PXActionを使用してAcumaticaに新しいアイテムを作成する際に問題が発生しました。AcumaticaでPXActionを使用して新しいアイテムを作成する際の問題

Acumatica公式ドキュメントの例「Tutorial」の「例8.2:カスタムオートナンバー型属性を作成する」に従って、「Document」DACの「DocumentNbr」フィールドのカスタム自動インクリメント属性を追加しました。ここで

enter image description here

は「DocumentNbr」フィールドの属性設定のコードの抜粋です:

#region DocumentNbr 
     protected string _DocumentNbr; 
     [PXDBString(15, IsUnicode = true, IsKey = true, InputMask = ">CCCCCCCC")] 
     [PXSelector(typeof(Search<MABUIPDocument.documentNbr>), 
       typeof(MABUIPDocument.documentNbr), 
       typeof(MABUIPDocument.documentDate), 
       typeof(MABUIPDocument.status), 
       typeof(MABUIPDocument.vendorID) 
      )] 
     [AutoNumber(typeof(MABUIPSetup.autoDocumentNbr), typeof(MABUIPSetup.lastDocumentNbr))] 
     [PXDefault()] 
     [PXUIField(DisplayName = "ID")] 
     public string DocumentNbr 
     { 
      get 
      { 
       return this._DocumentNbr; 
      } 
      set { this._DocumentNbr = value; } 
     } 
     public class documentNbr : IBqlField { } 

    #endregion 

それは私が、編集を追加し、通常は以下のように文書を削除できることを正常に動作されています。

enter image description here

私はボタンをクリックすると、新しいアイテムを作成する必要性を持っているので、I以下のように新しい項目ロジックを作成することを含む「新しい項目をテストする」ボタンを作成しました。私の理解では、「新しい項目を作成する」ボタンをクリックした後に作成された項目が表示されます。

public PXAction<MABUIPDocument> BtnCreatingNew; 
    [PXButton(CommitChanges = true)] 
    [PXUIField(DisplayName = "Test Creating new item", Visible = true)] 
    protected virtual void btnCreatingNew() 
    { 
     MABUIPDocument row = Documents.Current; 
     row.DocumentDesc = "Test" + DateTime.Now.ToString(); 
     row = Documents.Update(row); 
     Actions.PressSave(); 
    } 

新しい行がデータベースに挿入されていて、私はボタンをクリックした後、「次へ」の矢印が、現在のビューのフォームの内容がクリアされてクリックした場合に発生しますが、実際の状況は、は私が試しました"Document.Current = row"と "sender.SetValue(row、fieldName、fieldNewValue)"を設定するような多くのメソッドがありますが、何を試してもボタンをクリックしても内容は空白のままです。可能性のある理由が原因で何が起こったのかを教えてください。どうもありがとうございました!

enter image description here

答えて

1

新しい文書がデータベースに保存されている間、あなたのID値のみが生成されるので、それに応じてデータベースに保存された実際のID値を持つPXAdapterさん検索コレクションを更新する必要があります。

public PXAction<MABUIPDocument> BtnCreatingNew; 
[PXButton(CommitChanges = true)] 
[PXUIField(DisplayName = "Test Creating new item", Visible = true)] 
protected virtual IEnumerable btnCreatingNew(PXAdapter adapter) 
{ 
    MABUIPDocument row = Documents.Current; 
    row.DocumentDesc = "Test" + DateTime.Now.ToString(); 
    row = Documents.Update(row); 
    Actions.PressSave(); 

    adapter.Searches[adapter.Searches.Length - 1] = row.DocumentNbr; 
    return adapter.Get(); 
} 
+0

こんにちは@RuslanDev、ありがとう、それは完璧に動作します!私が関連する知識をどこに備えることができるか分かりますか?私はすべてのAcumatica文書T100、T200、T300をチェックし、それを紹介する場所はありませんでした。 – ukalpa

+0

こんにちは@カルパ、私はこのアプローチがドキュメントのどこにでもカバーされているとは思わない。 – RuslanDev

+0

こんにちは@RuslanDev、返信ありがとう、私はあなたと別の問題が次回に来るときにStackOverflowを気にしなければならない... :) – ukalpa

関連する問題