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

Sapui5 使用自定义比较器对表列进行排序,sapui5,Sapui5,我有一个表列,显示客户的全名(名字+姓氏)。但是,我想先按名字,然后按姓氏对该列进行排序。因此,我在控制器中添加了一些比较器功能: \u customNameComparator:函数(值1、值2){ //将全名的所有单词分开 var aWordsName1=值1.拆分(“”); var aWordsName2=值2.拆分(“”); //获取这两个名字的姓和名 var sFirstName1=value1.substring(0,value1.lastIndexOf(“”); var sLast

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

\u customNameComparator:函数(值1、值2){
//将全名的所有单词分开
var aWordsName1=值1.拆分(“”);
var aWordsName2=值2.拆分(“”);
//获取这两个名字的姓和名
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值相等
//-1值1小于值2
//1值1大于值2
如果(sLastName1==sLastName2){
if(sFirstName1==sFirstName2){
返回0;
}else if(sFirstName1>sFirstName2){
返回1;
}否则{
返回-1;
}
}else if(sLastName1>sLastName2){
返回1;
}否则{
返回-1;
}
}
单击列标题时,我尝试调用

var aSorter=[];
aSorter.push(新的sap.ui.model.Sorter(“全名”,b搜索,false,this.\u customNameComparator));
var oBinding=this.byId(“tableTargetGroupDetails”).getBinding(“items”);
oBinding.sort(aSorter);
比较器不是这样工作的。排序和往常一样(按全名)。我做错了什么


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

除非绑定的
操作模式是
客户端,否则您的比较器可能无法工作。您可以使用
{parameters:{operationMode:'Client'}}

设置绑定的模式。我是否正确理解所有项目都是初始加载的?因此,当我的目标组拥有例如300000个成员时,所有成员都会在初始化表时加载,以便可以在SAPUI5应用程序中本地完成排序,而不是使用后端交互?这是正确的。。。因此,对于这么多记录,您可能必须在后端实现所需的排序