Date/DateTime 客户端过滤器 JSON 模型
Date/DateTime Filters on client side JSON Model
我有一个绑定到 sap.m.Table 的 JSON 模型。我正在尝试根据 "Date" 列(绑定到模型的 属性[CreatedOn] 中的服务 returns 过滤数据JSON 对象格式 ("/Date(timeStamp)")。 table 如下:
来自服务器的示例日期:
我正在尝试在客户端过滤table,但我不确定如何在客户端实施日期过滤器。显示的日期格式基于
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();
当我执行上面的代码时,我总是得到"NO Data"。我还需要根据用户选择标准实施 "BT" 过滤器,但无法使其与 "EQ" 本身一起使用。
创建自定义过滤器
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,我可以进行调试。
我有一个绑定到 sap.m.Table 的 JSON 模型。我正在尝试根据 "Date" 列(绑定到模型的 属性[CreatedOn] 中的服务 returns 过滤数据JSON 对象格式 ("/Date(timeStamp)")。 table 如下:
来自服务器的示例日期:
我正在尝试在客户端过滤table,但我不确定如何在客户端实施日期过滤器。显示的日期格式基于
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();
当我执行上面的代码时,我总是得到"NO Data"。我还需要根据用户选择标准实施 "BT" 过滤器,但无法使其与 "EQ" 本身一起使用。
创建自定义过滤器
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,我可以进行调试。