Предотвратить переупорядочение некоторых столбцов SlickGrid - PullRequest
9 голосов
/ 01 июля 2011

Переупорядочение столбцов перетаскивания - отличная функция, но как я могу запретить пользователям перемещать определенные (не данные) столбцы?

Например, я использую Селекторы флажков для моего спискавыберите Сетка, но этот столбец всегда должен быть заблокирован слева, в то время как другие столбцы можно свободно переупорядочивать.

Ответы [ 2 ]

2 голосов
/ 17 января 2014

Я попробовал это:

function setupColumnReorder() {
var checkBoxColumn = $headers.children([0]).attr('id');
$headers.sortable({
items: "div:not('.slick-resizable-handle','#"+checkBoxColumn+"')",
...

, но у меня были проблемы при перетаскивании других столбцов перед ним.Затем я попробовал это:

grid.onColumnsReordered.subscribe(function (e, args) {
   if (myGridColumns[0].id != grid.getColumns()[0].id)
   {
       grid.setColumns(myGridColumns);
   }
   else 
   {
       myGridColumns= grid.getColumns();
    }
});

, и это было просто прекрасно.

2 голосов
/ 19 декабря 2011

Я посмотрел на сортируемые демоверсии в jQuery UI и изменил функцию setupColumnReorder в slick.grid.js, чтобы исключить определенные элементы. Исключив столбец флажка, я смог предотвратить его переупорядочение, даже перетаскивая другие столбцы перед ним.

function setupColumnReorder() {
var checkBoxColumn = $headers.children([0]).attr('id');
$headers.sortable({
items: "div:not('.slick-resizable-handle','#"+checkBoxColumn+"')",
...

Так как мой столбец флажка всегда первый, я просто получаю идентификатор, как это. Немного взломать, но это сработало.

...