我想在jqGrid中使用不同的导航按钮,具体取决于登录状态。 例如:如果用户已登录,则会出现添加/删除/编辑按钮。
有什么想法吗?
提前致谢。
答案 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
的信息发送回客户端。