客户端JSON模型上的日期/日期时间过滤器

时间:2016-12-19 03:08:04

标签: javascript sapui5 jsonmodel

我有一个绑定到sap.m.Table的JSON模型。我正在尝试根据列"日期"过滤数据。 (绑定到模型的属性[ CreatedOn ])服务以JSON对象格式(" / Date(timeStamp)")返回。表格如下: enter image description here

来自服务器的样本日期:

enter image description here

我正在尝试过滤客户端上的表格,但我不确定如何在客户端实施日期过滤器。显示的日期基于

格式化
  

sap.ui.model.type.Date({pattern:' dd / MM / YYYY'})

过滤代码如下所示:



var fromD = this.getView().byId("idKMFilterPaneDocDateF").getValue() ? new Date(this.getView().byId("idKMFilterPaneDocDateF").getValue()) :
  undefined;

var dtFilter = new sap.ui.model.Filter({
  path: "CreatedOn",
  operator: "EQ",
  value1: "dateTime'" + fromD.toJSON() + "'"
});

var binding = oTable.getBinding("items");
binding.filter([filter], "Application");
binding.refresh();




当我执行上面的代码时,我总是得到"没有数据"。我需要实现" BT"过滤器也可以根据用户选择标准进行过滤,但无法使用#34; EQ"本身。

1 个答案:

答案 0 :(得分:1)

创建自定义过滤器

var fromD = this.getView().byId("idKMFilterPaneDocDateF").getValue() ? new Date(this.getView().byId("idKMFilterPaneDocDateF").getValue()) :undefined;
var dtFilter = new sap.ui.model.Filter("CreatedOn");
dtFilter.fnTest = function(value) {
    //check what value are you getting here. If its string, get only time out of it
    //Compare the date values(in milliseconds)
    fromD.setHours(0); //get rid of time and concern about date
    fromD.setMinutes(0);
    fromD.setSeconds(0);
    fromD.setMilliseconds(0);
    //value should be date object, else change accordingly..
   if(fromD.getTime() === value.getTime()){
       return true;
   }
   return false;
};

PS:如果你可以使用编码上下文来使用JSFiddle,我可以调试。