使用自定义比较器对表格列进行排序

时间:2018-12-07 16:16:15

标签: sapui5

我有一个表格列,其中显示客户的全名(名字+姓氏)。但是,我想首先按名字对这个列进行排序,然后对姓进行排序。因此,我在控制器中添加了一些比较器功能:

[
    {
    key: [
    "Abortion Related",
    1977
    ],
    value: 4
    },
    {
    key: [
    "Abortion Related",
    1978
    ],
    value: 6
    }
]

单击“标题”列时,我尝试调用

_customNameComparator: function(value1, value2) {
    // Separate all words of the full name
    var aWordsName1 = value1.split(" ");
    var aWordsName2 = value2.split(" ");

    // Get the last and first names of the two names
    var sFirstName1 = value1.substring(0, value1.lastIndexOf(" "));
    var sLastName1 = aWordsName1[aWordsName1.length - 1];
    var sFirstName2 = value2.substring(0, value1.lastIndexOf(" "));
    var sLastName2 = aWordsName2[aWordsName2.length - 1];

    // 0 values are equal
    // -1 value1 smaller than value2
    // 1 value1 larger than value2

    if (sLastName1 === sLastName2) {
        if (sFirstName1 === sFirstName2) {
            return 0;
        } else if (sFirstName1 > sFirstName2) {
            return 1;
        } else {
            return -1;
        }
    } else if (sLastName1 > sLastName2) {
        return 1;
    } else {
        return -1;
    }
}

比较器不能这样工作。排序与往常一样(按全名)。我该怎么办?

顺便说一句:我知道这可能会导致某些错误的排序(例如,对于包含两个或多个单词的姓氏),但是由于它是“唯一的”排序,因此目前对我来说还可以。

1 个答案:

答案 0 :(得分:1)

除非绑定的operationModeClient,否则您的比较器可能无法工作。您可以使用{ parameters: { operationMode: 'Client' } }设置进​​行绑定的模式。