2016-11-18 9 views
0

Opportunities画面の新しいアクションメニューであるCreate Projectをクリックしてプロジェクトエントリ画面をリダイレクトまたはポップアップし、保存し直すと、プロジェクトフィールドで選択された作成済みのプロジェクトを使用して、機会画面に移動します。PXRedirectRequiredExceptionの後に作成されたエントリを取得する方法

これまで私の他の同様のモジュールからコピーしようとしたコードですが、保存後にOppurtunity画面のプロジェクトフィールドを更新していないという問題がありました。プロジェクトの作成ポップアップで閉じる。&

public class OpportunityMaint_Extension:PXGraphExtension<OpportunityMaint> { 

    public override void Initialize() { 
     Base.Action.AddMenuAction(createProject); 
     createSalesOrder.SetVisible(false); 
     createSalesOrder.SetEnabled(false); 
    } 

    public PXAction<PX.Objects.CR.CROpportunity> createSalesOrder; 

    [PXUIField(Visible = false)] 
    public IEnumerable CreateSalesOrder(PXAdapter adapter) { 
     return null; 
    } 


    public PXAction<PX.Objects.CR.CROpportunity> createProject; 

    [PXUIField(DisplayName = "Create Project", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Select)] 
    [PXButton()] 
    public IEnumerable CreateProject(PXAdapter adapter) { 
     List<CROpportunity> opportunities = new List<CROpportunity>(adapter.Get().Cast<CROpportunity>()); 

     foreach (CROpportunity opp in opportunities) { 
      Base.Save.Press(); 
      PXLongOperation.StartOperation(Base,() => ConvertToProject(opp)); 
     } 

     return opportunities; 
    } 

    public static void ConvertToProject(CROpportunity opportunity) { 
     ProjectEntry projectEntry = PXGraph.CreateInstance<ProjectEntry>(); 
     PMProject proj = new PMProject { 
      ContractCD = (string)"<NEW>", 
      CustomerID = opportunity.BAccountID, 
      Description = opportunity.OpportunityName, 
      OwnerID = opportunity.OwnerID 
     }; 

     proj = projectEntry.Project.Insert(proj); 
     opportunity.ProjectID = proj.ContractID; 

     throw new PXRedirectRequiredException(projectEntry , "Create Project", true); 
    } 

    protected void CROpportunity_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { 
     var row = (CROpportunity)e.Row; 
     if (row == null) return; 

     //createProject.SetEnabled(true); 
     createSalesOrder.SetVisible(false); 
     createSalesOrder.SetEnabled(false); 
    } 
} 

答えて

0

ページの.aspxファイルにpopupコマンドのキャンセルを追加してください。 aspxのアクション宣言には、<px:PXDSCallbackCommand Name="YourAction" Visible="True" CommitChanges="True" PopupCommand="Cancel" PopupCommandTarget="ds" />のようなものを入れてください。

0

似たようなものに遭遇しました。問題は、ブラウザで新しいタブ/ページとしてページを開くと、前のページに戻る真のリンクがないことです。

  • PXRedirectHelper.TryRedirect(グラフ、PXRedirectHelper.WindowMode.Popup)
  • (新しいPXPopupRedirectExceptionを投げる:私たちがやったことは、次のいずれかを使用して呼び出し、グラフ内の他のグラフへの呼び出しポップアップを行いましたグラフ、文字列、空白、真)

デフォルトのポップアップパネルのサイズは小さく、ページやコードファイルでは調整できません。私はここに見られるようなあなたは、固定値でサイズを増やすことができます。

Changing the height/width when calling another graph as an in-page popup using PXPopupRedirectException

あなたはそれを呼び出す前に、プロジェクトのグラフに機会を渡すことができれば、あなたはその後、保存機会を更新することを使用することができます新しいプロジェクト。パネルが閉じると、新しい価値でチャンスをリフレッシュする必要があります。

関連する問題