2013-07-19 4 views
0

Как часть koGrid 2.1.1 Мне не удалось заставить сортировку по умолчанию работать, а это означает, что если вы хотите, чтобы ваша сетка была отсортирована по определенному столбцу/направлению, вы не будете получить ожидаемое поведение. Сортировка по умолчанию в koGrid достигается с помощью sortInfo при настройке gridOptions в первый раз.KoGrid: сортировка по умолчанию не работает

Я создал пример, используя jsFiddle, который демонстрирует эту проблему. Вы можете заметить, что список не отсортирован по названию, даже если я указал sortInfo, чтобы сделать это.

1. Инициализация koGrid с сортировки информации:

 this.gridOptions = { 
      data: self.myData, 
      ... 
      sortInfo: ko.observable({ 
       column: { "field": "name" }, 
       "direction": "asc" 
      }) 
      ... 
     }; 

2. Обратите внимание на список не не отсортирован, ни стрелка показывает вверх:

enter image description here

ответ

2

Я изменил koGrid 2.2.1 debug js для использования sortInfo, если это указано. В принципе, я сделал два изменения следующим образом:

1. Создал функцию, которая возвращает столбец на поле в грид объекта:

window.kg.Grid = function (options) { 
... 
self.columnByField = function (field) { 
     if(field) { 
      var column; 
      $.each(self.columns(), function (i, c) { 
       if(field == c.field) { 
       column = c; 
       return false; 
       } 
      }); 
      return column; 
     } 
    } 
... 
} 

2. Изменена метод объекта Сетка инициализации искать SortInfo и сортировать столбец:

window.kg.Grid = function (options) { 
... 
self.init = function() { 
    ... 
    self.buildColumns(); 
    var sortingProperties = self.sortInfo.peek(); 
    if(sortingProperties) { 
     var col = self.columnByField(sortingProperties.column.field); 
     if(col) { 
     col.sortDirection(sortingProperties.direction === ASC ? DESC : ASC); 
     col.sort(); 
     } 

    } 
    ... 
} 
... 
} 

делая эту проблему сортировки по умолчанию решается. Я создал fork project on GitHub и добавил там новый файл debug js.

Теперь при загрузке сетки в первый раз сортировочные работы, как на рисунке ниже показано:

enter image description here

0

функция дополнения для gridOption SortInfo, как показано ниже

.... 
    sortInfo: this.sortDetails; 
    } 

Определение функции sortDetails как указано ниже

this.sortDetails.subscribe(function (data) { 
     this.sortData.sort(function (left, right) { 
      return left == right ? 0 : (left < right ? -1 : 1); 
     }); 
    });