2017-03-01 9 views
0

私はPOラインアイテムグリッドと新しいGIに配置されたボタンを作成しました。私はこれらのGIを開き、GIへのパラメータとしてPO注文番号を自動的に渡す必要があります。ボタンをクリックしてGIを開く

ボタンイベントハンドラで以下のコードを記述しました。しかし、メインウィンドウではなく内部フレーム(スクリーンショット参照)の内側でGIを開いています。

public PXAction<POOrder> viewFullSODemandGI; 
 

 
     [PXButton()] 
 
     [PXUIField(DisplayName = "View Full SO Demand", MapEnableRights = PXCacheRights.Insert, MapViewRights = PXCacheRights.Insert)] 
 
     protected virtual IEnumerable ViewFullSODemandGI(PXAdapter adapter) 
 
     { 
 
      var poOrderNbr = string.Empty; 
 
      foreach (POOrder current in adapter.Get<POOrder>()) 
 
      { 
 
       poOrderNbr = current.OrderNbr; 
 
      } 
 

 
      var sURL = PXUrl.ToAbsoluteUrl(HttpUtility.UrlPathEncode(string.Format("~/?CompanyID=Company&ScreenId=GI000092&POOrderNumber={0}", poOrderNbr.Trim()))); 
 

 
      throw new PXRedirectToUrlException(sURL, PXBaseRedirectException.WindowMode.New, false, null); 
 
     }

enter image description here

示唆してください。

答えて

3

私は2つのアプローチ(@Brendanによって提案された1もともと@Krunalによって使用される他の1)の最大の違いは、URLを構成する方法だと思います:

  • @Brendanが相対URL

  • ことを示唆しています
  • @Krunalは、私は絶対URLで@Krunalとまったく同じ結果を持っていた絶対URL

を作曲しました。しかし、以下のコードスニペットのいずれかによって構成される相対URLと、タスクが正常に達成された:

  • 使用GI名(問合せタイトル)の一般的な問い合わせIDを使用して

    string inqName = "InvoicedItems"; 
    var url = new StringBuilder(PXGenericInqGrph.INQUIRY_URL).Append("?name=").Append(inqName).ToString(); 
    throw new PXRedirectToUrlException(url, PXBaseRedirectException.WindowMode.New, true, null); 
    
  • (GUIDデータベースからのGI):

    string inqID = "6b267dbb-0ff2-49b2-b005-355c544daba3"; 
    var url = new StringBuilder(PXGenericInqGrph.INQUIRY_URL).Append("?id=").Append(inqID).ToString(); 
    throw new PXRedirectToUrlException(url, PXBaseRedirectException.WindowMode.New, true, null); 
    

またをチェックする価値があります0:

パラメータ(SalespersonID)とGI名(問合せタイトル)を用い
  • :汎用問い合わせID(データベースからGIのGUID)を使用して

    string inqName = "SalespersonSales&SalespersonID=SP0003"; 
    throw new PXRedirectToGIRequiredException(inqName, PXBaseRedirectException.WindowMode.New, true); 
    
  • Guid inqID = Guid.Parse("6b267dbb-0ff2-49b2-b005-355c544daba3"); 
    throw new PXRedirectToGIRequiredException(inqID, PXBaseRedirectException.WindowMode.New, true); 
    

PXRedirectToGIRequiredExceptionの両方のサンプルは、絶対にGIパラメータに値を割り当てることができます。

+0

GenericInquiry(PXGenericInqGrph.INQUIRY_URL)に使用できる定数があります。ルスランを共有してくれてありがとう – Brendan

+0

あなたはブレンダンです!上記の更新された答えに示すように、 'PXRedirectToGIRequiredException'に切り替える価値もあります。 – RuslanDev

+0

ああ、より良いです。マスタージェダイに感謝します。ただし、PXRedirectToGIRequiredExceptionを見ても、パラメータを渡すオプションは含まれていませんか?このためにはPXRedirectToUrlExceptionを使用する必要があります – Brendan

0

ウィンドウモードを変更します。 InlineWindowを使いたいと思う。また、あなたはこのようなURLを使用することができます...

throw new PXRedirectToUrlException(
    string.Format(@"~/GenericInquiry/GenericInquiry.aspx?ID=47842ccc-aa5d-4840-9d4a-7642cbf34cbe&POOrderNumber={0}", poOrderNbr.Trim()), 
    BaseRedirectException.WindowMode.InlineWindow, 
    string.Empty); 

テストして、メニューの追加なしで現在のウィンドウにロードします。

私は通常、GIのguid "ID"とスクリーンIDを使用してGenericの問い合わせを呼び出します。画面IDはAcumaticaのインスタンスによって異なる場合があります。 XMLの行 "DesignID"値として、GIのエクスポートからIDを取得できます。この例のID値をGI DesignID値に置き換えます。

+0

私はすでにそれを試みました。新しいウィンドウで開きます。しかし、私は同じ窓で開けたい。 – Krunal

+0

私はクイックテストを実行した後に自分の答えを更新しました。 InlineWindowを使用し、私の答えに示されているように呼び出します。 – Brendan

+0

スクリーンショットに示すように、内部フレーム内にロードすることは同じです。 GIをロードするカスタムボタンは、POラインアイテムグリッド上にあります。 – Krunal

関連する問題