SAPUI5 - 如何从表中搜索格式化日期

问题描述 投票:0回答:1

我有一个日期列,格式为MMM d,yyyy。如果用户搜索“2018”,我该如何过滤?

XML

<table:Column filterProperty="StartDate" sortProperty="StartDate" width="100px" tooltip="{i18n>ttStartDate}">
    <Label text="Start Date"/>
    <table:template>
    <Text text="{path:'localModel>StartDate',formatter:'.formatter.date'}"/>
        </table:template>
</table:Column>

调节器

searchTable: function (evt) {
            var oTable = this.getView().byId("ordersTable");
            var searchTerm = evt.getParameter("query");
            if (searchTerm === "") {
                //When clear was pressed on search field
                oTable.getBinding("rows").filter(null);
            } else {
                var filters = [];
                var outerFilters = [];
                var searchTerms = searchTerm.split(" "); //words separated by space are considered as separate search terms. 
                for (var k = 0; k < searchTerms.length; k++) {

                    filters.push(new Filter("OrderType", sap.ui.model.FilterOperator.Contains, searchTerms[k]));
                    filters.push(new Filter("StartDate", sap.ui.model.FilterOperator.Contains, searchTerms[k]));
                    outerFilters.push(new Filter(filters));
                    filters = [];
                }
                oTable.getBinding("rows").filter(new Filter({
                    filters: outerFilters,
                    and: true //Default is OR between filters
                }));
            }
        },

收到日期:StartDate:星期六3月23日2019 05:30:00 GMT + 0530 格式为:Mar 23,2019的日期

我知道'Contains'仅适用于Strings,但也适用于日期

sapui5
1个回答
1
投票

我们遇到了类似的问题,有2个解决方案,一个在客户端,另一个在服务器端。

客户端:使用该属性上的格式化程序将日期解析为字符串。

服务器端:请求该日期为字符串的另一个属性。

查看您的代码,我可以看到您已经在使用格式化程序(formatter.date),因此我们可以探索客户端选项。

在你的formater.date函数中,你可以这样做:

date(yourDateField)
{
   let options = { year: 'numeric', month: 'short', day: 'numeric' };
   return yourDateField.toLocaleDateString("en-US", options);
}
© www.soinside.com 2019 - 2024. All rights reserved.