Как правильно прикрепить событие «закрыть диалог» для «Выбор столбцов» jqGrid? - PullRequest
3 голосов
/ 09 августа 2011

У меня возникли проблемы с использованием диалогового окна закрытия для плагина выбора столбцов / виджета jqGrid.Вот что у меня есть - я начинаю с инициализации jqGrid с прикрепленным в конце средством выбора столбцов, например

ticketsTable = tableWrap.jqGrid({
    url: ... ,
    datatype: ... ,
    ...
    loadComplete: function(d) {
        ...
    }
})
.navGrid('#ticketsList_footer', {edit:false, add:false, del:false, cloneToTop:true})
.navButtonAdd('#ticketsList_toppager', {
    caption: "Columns",
    title: "Reorder Columns",
    id: "colButton",
    onClickButton: function(){ ticketsTable.jqGrid('columnChooser'); }
});

Затем в функции loadComplete (выше) я нахожу диалоговое окно и прикрепляю предупреждение к егособытие закрытия, например, так.

$('#colButton').click(function(e){
    setTimeout(function(){
        log($( ".ui-dialog" ).length);
        $( ".ui-dialog" ).bind( "dialogclose", function(event, ui) {
          log('close dialog event captured!');
        });
    }, 500);
});

По какой-то причине предупреждение появляется только тогда, когда я закрываю диалог с помощью кнопки «x» в углу.Когда я нажимаю «ОК» или «Отмена», оповещение отсутствует.Чего мне не хватает?

Кстати, причина, по которой я это делаю, заключается в том, что мне нужно обновить размер таблицы (setGridWidth) после закрытия диалогового окна, чтобы настроить добавленные / удаленные столбцы.Может быть, есть более элегантный способ сделать это?

1 Ответ

3 голосов
/ 09 августа 2011

Вы можете использовать следующий код

tableWrap.jqGrid (
    'navButtonAdd',
    '#pager',
     {
         caption: "", buttonicon: "ui-icon-calculator", title: "choose columns",
         onClickButton: function() {
             tableWrap.jqGrid('columnChooser', {
                     done: function(perm) {
                         if (perm) {
                             tableWrap.jqGrid("remapColumns", perm, true);
                             alert("The column chooser closed with 'OK' button");
                         } else {
                             alert("The column chooser closed with 'Cancel' button");
                         }
                     }
                 }
             );
        }
     });

См. демо

...