2016-06-16 4 views
0

を承認しますグリッドに[承認済み]行を表示しないでください。は、私は次の操作を実行するために承認タイムカードのサマリー画面をカスタマイズしていますタイムカード概要フィルタのカスタマイズ

新しい非バインドブールフィールドを持つキャッシュ拡張を追加し、そのチェックボックスを画面のフィルタ/ヘッダーセクションに追加しました。

私は疑問に思っているのは、ヘッダーフィルターフィールドをチェックして、フィルターテストに合格した行のみを返すIEnumerableメソッド(「概要」を使用できますか)がありますか?もしそうなら、私は文法がこれをするために何であるか分からない。

または、追加されたwhere句を使用してグラフ拡張のサマリービューのselect文を書き直す方が良いでしょうか?

ありがとう...

答えて

0

私はこれを行う方法を考え出しました。グラフの拡張機能では、「概要」ビューを書き直して、IEnumerableの「サマリー」デリゲートを使用して、設定したチェックボックスの条件を満たす行のみを返します。ウィジェットへ:

 public PXSelectJoin<EPSummaryApprove 
     , LeftJoin<EPEarningType, On<EPEarningType.typeCD, Equal<EPSummaryApprove.earningType>>> 
     , Where2<Where<EPSummaryApprove.taskApproverID, Equal<Current<EPSummaryFilter.approverID>>, Or<Where<EPSummaryApprove.taskApproverID, IsNull, And<EPSummaryApprove.approverID, Equal<Current<EPSummaryFilter.approverID>>>>>> 
      , And2<Where<EPSummaryApprove.weekId, GreaterEqual<Current<EPSummaryFilter.fromWeek>>, Or<Current<EPSummaryFilter.fromWeek>, IsNull>> 
       , And2<Where<EPSummaryApprove.weekId, LessEqual<Current<EPSummaryFilter.tillWeek>>, Or<Current<EPSummaryFilter.tillWeek>, IsNull>> 
        , And2<Where<EPSummaryApprove.projectID, Equal<Current<EPSummaryFilter.projectID>>, Or<Current<EPSummaryFilter.projectID>, IsNull>> 
         , And2<Where<EPSummaryApprove.projectTaskID, Equal<Current<EPSummaryFilter.projectTaskID>>, Or<Current<EPSummaryFilter.projectTaskID>, IsNull>> 
          , And<Where<EPSummaryApprove.employeeID, Equal<Current<EPSummaryFilter.employeeID>>, Or<Current<EPSummaryFilter.employeeID>, IsNull>> 
           > 
          > 
         > 
        > 
       > 
      > 
     > Summary; 

    protected IEnumerable summary() 
    { 
     var epsf = (EPSummaryFilter)Base.Filter.Cache.Current; 
     var epse = PXCache<EPSummaryFilter>.GetExtension<EPSummaryFilterExt>(epsf); 

     foreach(var res in Base.Summary.Select()) 
     { 
      var sum = (EPSummaryApprove)res; 

      if (epse != null) 
      { 
       if (epse.ExcludeApproved == true) 
       { 
        if (sum.IsApprove != true) 
        { 
         yield return res; 
        } 
       } 
       else 
        yield return res; 
      } 
      else 
       yield return res; 
     } 
    } 
関連する問題