Jqgrid в JQuery UI вкладки - PullRequest
1 голос
/ 26 июня 2011

У меня есть пользовательская кнопка для моего jqgrid, которая при нажатии переводит меня в другое представление. Но по какой-то причине, когда я перемещаюсь между вкладками, при каждом повторном посещении этой вкладки появляется дополнительная пользовательская кнопка. Есть ли способ сказать только добавить эту кнопку один раз?

Это разметка:

$('#tabs').tabs( {
    show: function (event, ui) {
        if(ui.index == 0) {
           Show some content on this tab.. Not important.
        }

        if(ui.index == 1) {
            $("#functionslist").jqGrid({
                datatype: 'json',
                url: '/Admin/GetFunctionsList',
                colNames: ['Namn'],
                colModel: [
                           { index: 'FunctionName', 
                             name: 'FunctionName', 
                             width: 100, 
                             sortable: false 
                           }
                          ],
                 rowNum: 20,
                 prmNames: { sort: 'SortColumn', order: 'SortOrder', page: 'Page', rows: 'Rows', search: null, nd: null },
                 hidegrid: false,
                 pager: '#functionspager',
                 autowidth: true,
                 shrinkToFit: true,
                 height: '100%',
                 caption: 'Functions',
                 viewrecords: true,
                 onSelectRow: function (id) {
                        window.location.href = '/Function/Edit/' + id;
                 }
             }).jqGrid('navGrid', '#functionspager', { edit: false, add: false, del: false, search: false, refresh: false })
             .navButtonAdd('#functionspager', {
                 caption: '',
                 title: 'Create new function',
                 buttonicon: 'ui-icon-plus',
                 onClickButton: function () {
                     window.location = '/Function/Add/';
                 }
             }); .... and so forth....

Все работает нормально, и у меня есть поведение, которое я хочу, но по какой-то причине, когда я перемещаюсь между двумя вкладками, все больше и больше пользовательских кнопок добавляются. Любые идеи, почему, пытались решить эту проблему, но безуспешно.

/ Daniel

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

Вызов $("#functionslist").jqGrid({/*parameters*/); преобразует пустой <table> в сетку, содержащую столбцы, захват, пейджер и так далее. Вы должны сделать звонок один раз и не повторять его при каждой активации вкладки.

Точно так же методы navGrid и navButtonAdd должны вызываться только один раз .

Таким образом, вы должны решить, что делать, если пользователь выберет вкладку с jqGrid. Вы можете, например, позвонить

$("#functionslist").trigger('reloadGrid', [{current:true}]);

(подробности см. здесь )

0 голосов
/ 26 июня 2011

Почему бы не проверить, существует ли кнопка до ее добавления?

 if ($('#functionspager :has(".ui-icon-plus")').length == 0) {
     $("#functionslist").jqGrid('navGrid', '#functionspager', { edit: false, add: false, del: false, search: false, refresh: false })
         .navButtonAdd('#functionspager', {
            ...
          });
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...