Как вы обновляете ng-grid gridOptions.sortInfo?

Я пытаюсь программно обновить gridOptions.sortInfo в сетке Angular ng-grid, но не могу заставить ее работать.

У меня есть столбцы «имя» и «возраст». Сначала я устанавливаю сортировку в столбце «имя», но хотел бы загрузить некоторые новые данные, а затем обновить их, чтобы отсортировать по «возрасту». (Программно, а не просто нажав на заголовок столбца).

Я могу установить для $scope.gridOptions.sortInfo новое значение, но сетка этого не отражает. Как правильно обновить gridOptions.sortInfo?

Пожалуйста, смотрите плункер:

http://plnkr.co/edit/JBYnrwLAIwFSKS6uSAND?p=preview

РЕДАКТИРОВАТЬ: обратите внимание, что я хотел бы иметь возможность обновлять направление сортировки, то есть по возрастанию/убыванию, а также фактический столбец для сортировки.

Большое спасибо


person EdL    schedule 15.07.2013    source источник
comment
Я бы тоже хотел это знать... Я видел, как пару раз возникал вопрос о том, как изменить столбцы сетки, и не видел ответа... возможно, копаясь в источнике необходимо.   -  person shaunhusain    schedule 15.07.2013


Ответы (3)


Да, согласно исходному коду (строка номер 128 здесь ссылка) вы должны просто сделать так:

$scope.updateSortInfo = function() {
  $scope.gridOptions.sortBy('name');
}

Плункер показывает, что он работает. Я разветвил его здесь.

Вот еще одна версия с sortColumn, переданной из текстового поля: plunker.

person marko    schedule 15.07.2013
comment
Большое спасибо. Это то, что мне нужно, чтобы установить имя столбца, но, к сожалению, не обрабатывает направление сортировки (по возрастанию/убыванию). Было бы хорошо, если бы код был обновлен, чтобы принимать объект sortInfo: например. {поля: ['возраст'], направления: ['описание']} - person EdL; 17.07.2013

Оказывается, если вы дважды вызовете $scope.gridOptions.sortBy() для одного и того же столбца, он будет сортироваться в порядке убывания.

person Mitch Penrod    schedule 25.07.2014

Посмотрите на это: http://ui-grid.info/docs/#/api/ui.grid.class:GridOptions.columnDef

Найдите этот текст:

sort Объект информации о сортировке, атрибуты:

Мне нужно было отсортировать по столбцу id в начале в порядке описания, и это помогло мне:

var columnsDef = [
            {name:'id',width:50,sort: {
                direction: 'desc',
                priority: 0
            }},
            {name:'title',width:350},
            {name:'address'},
            {name:'date',width:150},
            {name:'description',minWidth:450}
        ];
$scope.theGrid.columnDefs = columnsDef;
person Natan Rubinstein    schedule 11.08.2015