1

我正在使用 knockout.js 对网格进行排序。以下是我的排序功能

this.sortByName = function() {
var event = arguments[1];
var targeElement = event.originalTarget;
// console.info(targeElement);
console.log(targeElement.attributes[1].nodeValue);

order   =   'sorting';

configuration.data.sort(function(a, b) {
        if(a.name<b.name){
                order   =   'sorting_desc';
                    return a.name > b.name ? -1 : 1;
        }
        else if(a.name>b.name){
            order   =   'sorting_asc'
            return a.name < b.name ? -1 : 1;
            }


});

$(targeElement).removeClass('sorting_asc sorting_desc').addClass(order);
};

默认网格视图 默认网格视图 排序后的图像 1

在此处输入图像描述 排序后的图像 2 在此处输入图像描述 如您所见,排序顺序不正确。我在这个问题上玩了 3 天。

4

1 回答 1

2

Well I found a solution to this problem

this.sortByName = function() {
     currentOrder = arguments[0].sortClass();
     var sortColumn = arguments[0].rowText;
     if(currentOrder =='sorting' || currentOrder =='sorting_desc'){

         currentOrder='sorting_asc';

             configuration.data.sort(function(a, b) {

               if (a[sortColumn] == b[sortColumn])
                    return 0;
                else if (a[sortColumn] < b[sortColumn])
                    return -1;
                else
                    return 1;

            });
             }else{
                 currentOrder='sorting_desc';
                 configuration.data.sort(function(a, b) {
                        if (a[sortColumn] == b[sortColumn])
                            return 0;
                        else if (a[sortColumn] > b[sortColumn])
                            return -1;
                        else
                            return 1;

                    }); 
             }
             self.resetSortColumns();
            arguments[0].sortClass(currentOrder);
        };
于 2013-06-13T15:02:54.500 回答