2017-04-07 13 views
0

sap.m.Tableがあり、1つの列に値がフォーマットされ、UIに表示されます。 そう、バックエンドからのデータが "EventDateTime": "2017-04-05T12:32:35.276Z"であると仮定します。フィルタはフォーマット済み値であり、モデルバインディングではありません

このようなタイムスタンプのタイムゾーンも表示されます。

ここで、受信したデータをタイムゾーンを使用して変換し、そのデータを06:32 04/04/2017形式で表示します。

ここで、テーブルにカラムフィルタを適用する必要があります。お分かりのように、バックエンドの値と画面に表示される値の差はです()(タイムゾーン変換のため、表示されるデータは1日後です)。ここでは、UIに表示される値ではなく、UIに表示される書式付き値にフィルタを適用したいと考えています。助けてください

{ 
    "root":[ 
     { 
     "EventDateTime":"2017-03-14T17:04:22.856-05:00", 
     "CreateDateTime":"2017-03-10T19:38:11-05:00", 
     "WaybillId":827xxxx330697, 
     "WaybillSerialNumber":60xx4277, 
     "KillReason":"EMPTY", 
     "KillDateTime":"2017-03-29T22:20:00-05:00", 
     "WaybillNumber":2xx71, 
     "ServiceOrderDateTime":"2017-03-10T19:38:00-05:00", 
     "EventTimeZone":"EST", 
     "CreateDateTimeZone":"EST" 
     }, 
     { 
     { 
     "EventDateTime":"2017-04-14T17:04:22.856-05:00", 
     "CreateDateTime":"2017-03-10T19:38:11-05:00", 
     "WaybillId":82784xxx0697, 
     "WaybillSerialNumber":6033xxx4277, 
     "KillReason":"EMPTY", 
     "KillDateTime":"2017-03-29T22:20:00-05:00", 
     "WaybillNumber":2xx2071, 
     "ServiceOrderDateTime":"2017-03-10T19:38:00-05:00", 
     "EventTimeZone":"MDT", 
     "CreateDateTimeZone":"IST" 
     } 
     } 
    ] 
} 

:このダミーデータを考えてみましょう

new sap.ui.model.Filter({ path: sPath, operator: "BT", value1: aValue[1], value2: aValue[2] })

だから、現在、私たちのような日のための基本的なフィルタを持っています。

答えて

0

あなたはあなたの条件に応じてtrueまたはfalseを返す、フィルターにtest機能を渡す必要があります:

new sap.ui.model.Filter({ 
     path: sPath, 
     test: function(value){ // value is the actual value from the cell 
     return value === yourCondition; //here you check the value against your condition 
     } 
}); 

EDIT:フィルタリング複数の条件によって

new sap.ui.model.Filter({filters: [ 
         new sap.ui.model.Filter({ 
          path: sPath, 
          test: function (value) { // value is the actual value from the cell 
           return value === sQuery; //here you check the value against your condition 
          } 
         }), 
         new sap.ui.model.Filter({ 
          path: sPath2, //Same or different path 
          test: function (value) { 
           return secondCheck(value); //different condition 
          } 
         }) 
        ], and: true //set to false for "or" behaviour 
}) 

EDIT 2:ルートを渡します要素はsPathとして

new sap.ui.model.Filter({ 
      path: "", //Instead of matching "{EventDateTime}" we bind the entire object 
      test: function(value){ 
      return isEqual(value.EventDateTime, value.EventTimeZone); 
      } 
    }); 

ドキュメント:https://sapui5.hana.ondemand.com/#docs/api/symbols/sap.ui.model.Filter.html

+0

テスト機能に渡す複数の値が必要です。現在のノード全体をテスト関数に渡す方法はありますか?私はそこにこだわっている。 –

+0

@RahulBhardwaj私はフィルタの配列で私の答えを拡大しました。論理条件文と同様に 'Filters'をグループ化して組み合わせることができます。それはあなたが必要とするものですか?ノード全体を 'test'関数に渡す必要があると思われる場合は、sPathがあまりにも具体的である可能性があります。オブジェクト全体を関数に渡したい場合は、空の 'sPath'(" ")を試してみることもできます。 –

+0

ありがとうございますが、同時に両方の値が必要です。 2つのパラメータに基づいて、私は最初のパラメータを変更し、trueまたはfalseを返すことができます。 –

関連する問題