排序显示意外结果

时间:2013-06-13 13:36:50

标签: sorting gridview knockout.js

我正在使用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);
};

默认网格视图 By Default grid view 排序图像1

enter image description here 已排序的图像2 enter image description here 如您所见,排序顺序不正确。我在这个问题上已经玩了3天了。

1 个答案:

答案 0 :(得分:2)

我找到了解决这个问题的方法

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);
        };