如何将表列过滤器与格式化列一起使用?

2023-12-24

我有一个 JSON 模型,其中包含一些存储为纪元值的日期值:

var oData = [{
    string : "SomeValue",
    date   : 1404172800000
}];

当我加载模型时,我使用以下方法将此纪元转换为正确的 Javascript Date 对象:

for (var i = 0; i < oData .length; i++) {
    var dateLong = oData[i].date;
    oData[i].date = new Date(dateLong);
}

然后,在我的表中,我使用格式化程序函数呈现该列:

var oDateColumn = new sap.ui.table.Column({
    label: new sap.ui.commons.Label({
        text: "A Date"
    }),
    template: (new sap.ui.commons.TextView({
        text : {
            parts : [date],
            formatter : function(oValue) {
                if (oValue != undefined) {
                    var yyyy = oValue.getFullYear().toString();                                    
                    var mm   = (oValue.getMonth()+1).toString(); // getMonth() is zero-based         
                    var dd   = oValue.getDate().toString();             
                    return yyyy + '/' + (mm[1]?mm:"0"+mm[0]) + '/' + (dd[1]?dd:"0"+dd[0]);
                } else return "";
            }
        },
        textAlign  : sap.ui.core.TextAlign.Right
    })),
    sortProperty   : "date",
    filterProperty : "date",
    filterOperator : sap.ui.model.FilterOperator.EQ
});

这工作正常,前纪元现在是一个日期,很好地呈现为“2014/07/01”

但是,过滤不是针对格式化日期,而是针对原始 Date 对象 - 如果我过滤'2014/07/01'我没有得到任何结果;如果我过滤'1404172800000'我得到过滤后的结果...

我尝试在 filterProperty 上使用格式化程序,但无法使其正常工作。

有谁知道如何让用户过滤格式化日期?


使用日期类型可能会解决这个问题

var dateType = new sap.ui.model.type.Date({
 pattern: "yyyy/MM/dd"
});

...

sortProperty   : "date",
filterProperty : "date",
filterType: dateType

看这个example https://openui5.hana.ondemand.com/test-resources/sap/ui/table/internal/TableFixedColumnsAndRows.html生日栏的一个简单用例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将表列过滤器与格式化列一起使用? 的相关文章

  • Cassandra 中按时间戳排序最新记录

    我正在尝试显示传感器列表中的最新值 该列表还应该可以按时间戳排序 我尝试了两种不同的方法 我在主键中包含了传感器的更新时间 CREATE TABLE sensors customerid int sensorid int changedat

随机推荐