- jqGrid表格与shiro,实现表格行按钮权限控制
假如行内col列有两个按钮,下面的意思是有一个按钮就要展示这一列,默认此列隐藏
<shiro:hasPermission name="user:update">
<script type="text/javascript">
$(document).ready(function () {
$("#table").setGridParam().showCol("col");
});
</script>
</shiro:hasPermission>
<shiro:hasPermission name="user:updatePassword">
<script type="text/javascript">
$(document).ready(function () {
$("#table").setGridParam().showCol("col");
});
</script>
</shiro:hasPermission>
在html内加两个按钮展示的方法,实现权限控制的关键,直接在js内将标签拼上无效果
<shiro:hasPermission name="user:updatePassword">
<script type="text/javascript">
function edit(){
$('.edit').css('display','');//display不用block原因是避免改变行间样式
}
</script>
</shiro:hasPermission>
<shiro:hasPermission name="user:update">
<script type="text/javascript">
function edit(){
$('.add').css('display','');//
}
</script>
</shiro:hasPermission>
userFormatter方法,将表格列转为按钮 ,默认隐藏
在两个按钮class属性加上edit和add
function userFormatter(cellvalue, options, rowObject) {
var str = '<button style="display: none" class="btn btn-info btn-xs edit" type="button" onclick="fun(\''+ cellvalue +'\')"><i class="fa fa-paste"></i> 编辑</button> ';
str = str + '<button style="display: none" class="btn btn-danger btn-xs add" type="button" onclick="fun(\''+ cellvalue +'\')"><i class="fa fa-edit" style="width: 12px;height: 12px"></i> 修改密码</button>';
return str;
}
jqgrid表格初始化
$("#table").jqGrid({
url: '',
datatype: "json",
mtype: "post",
postData: {''},
height: "100%",
autowidth: true,
shrinkToFit: true,
rowNum: 20,
rowList: [10, 20, 30],
colNames : [ '操作'],
colModel : [ {
name : 'col',
index : 'col',
sortable : false,
width : 50,
align: 'center',
hidden: true,//默认隐藏
key:true,
formatter: userFormatter//将此列转为按钮
}],
pager: "#pager_list",
loadComplete: function() {//重点,loadComplete方法为在表格加载完毕之后执行
if(typeof edit!= 'undefined' && edit instanceof Function){//验证方法是否存在,如果shiro没有权限这个方法就不会存在,
//如果用户有编辑权限,就会执行此edit方法,展示编辑按钮
edit();
}
if(typeof add!= 'undefined' && add instanceof Function){
add();
}
},
});