2011-01-04 2 views
4

В нашем приложении мы используем jqGrid, который поддерживает скрытие и переупорядочение столбцов. Когда столбцы скрыты или переупорядочены, мы хотим сохранить новые настройки в нашей базе данных. Но для этого нам нужно как-то захватить сокрытие или переупорядочивание. Или, возможно, для захвата при изменении colModel.Как захватить события изменения столбца jqGrid?

Есть ли способ захватить и обработать эти события?

Спасибо.

ответ

4

Вы можете использовать событие «done» для columnChooser. Вот пример:

var grid = $("list"); 
grid.navButtonAdd(
    '#pager', 
    {caption:"", buttonicon:"ui-icon-calculator", title:"Column choose", 
    onClickButton: function() { 
     grid.jqGrid('columnChooser', 
        { 
         "done": function(perm) { 
          if (perm) { 
           this.jqGrid("remapColumns", perm, true); 
          } 
          // here you can do some additional actions 
         } 
        }); 
    } 
}); 

ОБНОВЛЕНО: Если определить sortable вариант как

sortable: { 
    update: function (permutation) { 
     alert("sortable.update"); 
    } 
} 

, а не как sortable:true вы будете получать уведомления о новом порядке столбцов. См. the source code jqGrid для деталей. Массив permutation с целыми числами имеет то же значение, что и в функциях remapColumns (подробности см. В моем old answer).

+0

Спасибо за отзыв, но мы не используем columnChooser, а комбинацию setColumns для сокрытия и сортировки (переупорядочение столбцов) для сортировки. Ваш совет помог мне найти подходящее событие для setColumns, которое называется afterSubmitForm. Но для переупорядочения столбцов я не могу найти ничего в вики. – jgosar

+0

@jgosar: Добро пожаловать! Чтобы сказать доверие, я действительно не понимаю, как вы реализуете скрытие и переупорядочение столбцов. Moreother 'columnChooser' делает именно то, что вы описываете, и очень удобно, включая поддержку drag & drop и т. Д. Вероятно, добавление кода к вашему вопросу может объяснить все. Для поиска столбцов для 'remapColumns' (см. Http://stackoverflow.com/questions/3665692/change-the-sequence-of-jqgrid-columns/3666225#3666225). Возможно, вам поможет проверка исходного кода columnChooser https://github.com/tonytomov/jqGrid/blob/master/js/grid.jqueryui.js#L110. – Oleg

+0

@jgosar: Чтобы увидеть 'columnChooser' live, вы можете открыть демонстрационную страницу jqGrid http://trirand.com/blog/jqgrid/jqgrid.html, выбрать в левой части страницы« Новое в версии 3.6 », а затем« Колонка Chooser ". На панели навигации вы можете нажать кнопку «Столбцы» и поиграть с ней. Вы можете использовать drag & drop для переупорядочения colomn. – Oleg

1

Вы можете записывать изменения столбцов с помощью сортируемого параметра, как описано в «обновлении» Олега, или, как обсуждалось в jqGrid's message board.

Однако обратите внимание, что массив, переданный вашему обратному вызову, будет относиться к текущему порядку столбцов. Другими словами, сохранение массива, как после перемещения нескольких столбцов, не даст желаемых результатов. См. Мой ответ на этот вопрос other stackoverflow question.

Смежные вопросы