jqGrid: различные кнопки навигатора в зависимости от состояния входа в систему

Я хочу использовать различные кнопки навигатора в jqGrid в зависимости от состояния входа в систему. например: если пользователь зарегистрирован, затем добавляют/удаляют/редактируют, что кнопка появилась.

Какие-либо идеи?

Заранее спасибо.

1
задан heiko 27 June 2010 в 09:41
поделиться

2 ответа

Кнопки можно добавлять программно, используя метод navButtonAdd (для панели навигации) и метод toolbarButtonAdd для панели инструментов. Например:

        jQuery("#grid").toolbarButtonAdd('#t_meters',{caption:"MyButton",
         id: "t_my_button",
         title: "Do my button action",
         buttonicon: 'ui-icon-edit',
         onClickButton:function(){
           // Button handle code goes here...
         }
        });

И:

        jQuery("#grid")..navButtonAdd('#pager',{
         id: "t_my_button",
         title: "Do my button action",
         buttonicon: 'ui-icon-edit',
         onClickButton:function(){
           // Button handle code goes here...
         }
        });

Для получения дополнительной информации см. Пользовательские кнопки в Wiki.

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

1
ответ дан 2 September 2019 в 23:28
поделиться

Вы также можете использовать, например, userdata (см. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#user_data ) для отправки информации о кнопках, которые вам необходимо иметь в навигатор. пользовательские данные должны быть установлены сервером. Затем в отношении:

var navGridParams = jQuery("grid_id").getGridParam('userData');
// var navGridParams = { edit: false, add: false, search: true }

вы можете получить набор данных с сервера.

Теперь типичный вызов вроде:

jQuery("grid_id").navGrid('#pager', { edit: false, add: false, search: true });

Вы должны разместить не после создания jqGrid, а внутри, чем внутри loadComplete . Таким образом, код может выглядеть следующим образом:

var isNavCreated = false;
jQuery('#list').jqGrid({
    // ...
    loadComplete: function () {
        var grid = jQuery("grid_id");
        if (isNavCreated === false) {
            isNavCreated = true;
            var navGridParams = grid.getGridParam('userData');
            grid.navGrid('#pager', navGridParams);
        }
    },
    // ...
});

Другой вариант, который я вижу, - использовать cookie вместо userdata для отправки информации о navGridParams обратно клиенту.

1
ответ дан 2 September 2019 в 23:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: