Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sapui5中的日期过滤器_Sapui5 - Fatal编程技术网

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);