jqGrid:不同的导航按钮取决于登录状态

时间:2010-06-27 09:41:23

标签: login jqgrid button

我想在jqGrid中使用不同的导航按钮,具体取决于登录状态。 例如:如果用户已登录,则会出现添加/删除/编辑按钮。

有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

可以使用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上的Custom Buttons

无论如何,一旦此代码到位,您就可以检测服务器端的登录状态。然后使用这些知识生成客户端代码,如果用户应该可以访问它们,那么只会将按钮添加到网格中。

答案 1 :(得分:1)

您还可以使用例如userdata(请参阅http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#user_data)来发送有关您需要在导航器中显示的按钮的信息。 userdata应由服务器设置。然后尊重:

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的信息发送回客户端。