sapui5中的日期过滤器
我使用了两个日期控件来过滤行中继器sapui5中的日期过滤器,sapui5,Sapui5,我使用了两个日期控件来过滤行中继器 oF_cell5 = new sap.ui.commons.layout.MatrixLayoutCell({id:"F05",colSpan : 2}); var oCreateFrom = new sap.ui.commons.DatePicker("EV_AE_DATE1", {width:"150px",placeholder:"Create
oF_cell5 = new sap.ui.commons.layout.MatrixLayoutCell({id:"F05",colSpan : 2});
var oCreateFrom = new sap.ui.commons.DatePicker("EV_AE_DATE1",
{width:"150px",placeholder:"Created From",
change:function(oEvent){
oController.onChangeFilterValue(oEvent);}
})
oF_cell51 = new sap.ui.commons.layout.MatrixLayoutCell({id:"F051",colSpan : 2});
var oCreateTill = new sap.ui.commons.DatePicker("EV_AE_DATE2",
{width:"150px",placeholder:"Created Till",
change:function(oEvent){
oController.onChangeFilterValue(oEvent);}
});
现在我有了一个rowrepeater,其中一列是createdonDate,比如
new sap.m.HBox({
items:[new sap.ui.commons.TextView({text:"Created on:"}),
new sap.ui.commons.TextView("TV11")
.bindProperty("text",
{
path: "CM_EventList>CREATEDON",
type: new sap.ui.model.type.Date({pattern:"MMM dd, yyyy",
source : {pattern : "dd.MM.yyyy"}})
})]
}),
在控制器中,我将此代码编写为
onInit: function() {
var model = new sap.ui.model.json.JSONModel("eventlist.json");
model.setData();
sap.ui.getCore().setModel(model,"CM_EventList");
},
onChangeCmFilterValue : function(oEvent){
var CM_FDATEVAL = sap.ui.getCore().byId("EV_AE_DATE1").getValue();
var CM_TDATEVAL = sap.ui.getCore().byId("EV_AE_DATE2").getValue();
var CM_Date = new sap.ui.model.Filter('CM_EventList>CREATEDON',
sap.ui.model.FilterOperator.BT,CM_FDATEVAL,CM_TDATEVAL);
var oCM_VBOX1 = sap.ui.getCore().byId("EV_CM_VBOX");
var oCM_RR1 = sap.ui.getCore().byId("EV_AE_ROWREPEATER");
oCM_RR1.bindRows('CM_EventList>/eventlist',oCM_VBOX1,null,[CM_Date]);
},
事件列表是我单独的json文件,它的日期值如下
{
"eventlist": [
{
"CREATEDON": "10.07.2014",
},
{
"CREATEDON": "10.08.2014",
},
.......
and so on..........
现在,如果从my date控件中选择一个日期范围,那么行中继器应该显示日期范围之间的记录,如my json中所示
但过滤器不工作。
请帮我做这个
谢谢
Sathish我认为您应该检查以下值。格式应不同于json值“CREATEDON”:“10.08.2014” 请尝试使用以下内容创建日期选择器:
type: new sap.ui.model.type.Date({pattern: ""yyyy-MM-dd""})
编辑:将日期用作筛选器
问候,,
Allen首先,如果尚未使用for date字段,请在视图中使用该字段
可以使用以下方法获取日期选择器的值作为日期对象。然后,可以使用这些日期对象为数据模型的datetime字段创建筛选器
var dateFrom = this.getView().byId("filterDateFrom").getDateValue();
var dateTo = this.getView().byId("filterDateTo").getDateValue();
if (dateFrom != null && dateTo != null) {
filter = new sap.ui.model.Filter(
"CM_EventList>CREATEDON",
sap.ui.model.FilterOperator.BT,
dateFrom,
dateTo
);
}
顺便说一句:请注意,这两个日期对象实际上都表示一天开始的时刻(0:00:00),而数据库中的时间戳通常是一天中的某个时间点。因此,如果要在两个日期之间进行搜索,则需要在dateTo
中添加一天:
dateTo.setDate(dateTo.getDate() + 1);
另一个你可能需要或不需要处理的问题是时区。。。当然。请正确设置代码格式。我在视图和控制器中都提到了代码@埃夫金尼希·艾伦感谢您的回复。是的,我试过使用代码var ocretatill=new sap.ui.commons.DatePicker(“EV_AE_DATE2”{width:“150px”,占位符:“Created Till”,type:new sap.ui.model.type.Date({pattern:“dd.MM.yyyyy”}),change:function(oEvent){oController.onChangeCmFilterValue(oEvent);})但是,当我从第一个日期选择器中选择一个日期时,它会显示这样一个错误:为过滤器定义了错误的参数-嗨,sathish,要比较日期字符串,它的格式应该是“yyyy-MM-dd”。我也找到了这篇文章。您可以开始尝试EQ,看看它是否有效。然后试试BT。嗨,Allen,是的,我也试过用一个过滤器属性EQ,但是过滤器不工作……你的JSON日期是字符串“10.08.2014”,而datepicker需要一个Javascript date()对象。将JSON文件加载到模型中后,首先将字符串转换为正确的日期对象,然后按照链接Allen ProvideHi Qualiture中所述的步骤进行操作。您能否帮助我将字符串转换为日期格式。。。??
var dateFrom = this.getView().byId("filterDateFrom").getDateValue();
var dateTo = this.getView().byId("filterDateTo").getDateValue();
if (dateFrom != null && dateTo != null) {
filter = new sap.ui.model.Filter(
"CM_EventList>CREATEDON",
sap.ui.model.FilterOperator.BT,
dateFrom,
dateTo
);
}
dateTo.setDate(dateTo.getDate() + 1);