easyui treegrid checkbox 无法清除
现象
1.第一次进入能够自动匹配 javabean的 Boolean checked 字段
2.第二次无法清除 checkbox ,并且第一次选中的row也无法手动unchecked
3.savepermisson 方法无法获取roleid
源代码 permission.js
/**
* 角色配置管理
*/
// 全局变量
var check_roleid = -1;
var check_rolename ="";
// 获取指定角色的功能权限
function getFunctionsByRoleId(roleid,rolename) {
// 给全局变量赋值
checkroleid = roleid;
checkrolename = rolename;
// 清空数据
$('#permissiondg').treegrid({
data : null
});
// 清除选中状态
$('#permissiondg').treegrid('clearChecked'); //这句有问题!!!!
// 重新加载数据
$("#permissiondg").treegrid({
url : "permission/list/" + roleid,
idField:'id',
treeField:'functionname',
animate :true,
checkbox: true,
columns : [ [
{field : 'id',title : 'Id',hidden : true},
{field : 'functionname',title : '功能名称'},
{field : 'funcurl',title : '功能路径'},
{field : 'creationtime',title : '创建时间',
formatter : function(value) {
return formatDate(value);
}
},
{field : 'createdby',title : '创建者'},
{field : 'isstart',title : '是否启用',align : 'center',
formatter : function(value, row, index) {
switch (value) {
case 0:
return "停用";
break;
case 1:
return "启用";
break;
default:
return "-";
break;
}
},
styler : function(value, row, index) {
if (value == 0) {
return 'color:red;';
} else {
return 'color:green;';
}
}
} ] ],
toolbar : [ {
text : '保存',
iconCls : 'icon-save',
handler : function() {
savePermission();
}
}, {
text : '重置',
iconCls : 'icon-undo',
handler : function() {
reset();
}
} ],
fitColumns : true,// 自适应宽度
striped : true,// 列表是否有间隔底色
resizable :true,// 列尺寸可调节
rownumbers : true, // 行前显示行号
idField : 'id', // 指定选中时返回的维度字段名,如id
singleSelect : false,
selectOnCheck : true,
checkOnSelect : true,
onLoadError:function(error){
$.messager.alert('错误','服务器异常,数据加载失败!','error');
}
/* onLoadSuccess : function(data) {
if (data) { $.each(data.rows,function(index, item) {
if (item.isCheck) {
$('#permission_dg').datagrid('checkRow', index);
}else{
$('#permission_dg').datagrid('uncheckRow', index);
}
});
}}*/
});
}
//格式化时间
function formatDate(date){
var mydate =new Date(date);
var year = mydate.getFullYear();
var month= (mydate.getMonth()+1);
var day = mydate.getDate();
var hour = mydate.getHours();
var minute =mydate.getMinutes();
var second =mydate.getSeconds();
return year+"-"+(month<10?"0"+month:month)+"-"+(day<10?"0"+day:day)+" "+(hour<10?"0"+hour:hour)+":"+(minute<10?"0"+minute:minute)+":"+(second<10?"0"+second:second);
}
function savePermission() {
$.messager.confirm('确认', '你确定要修改['+checkrolename+']的功能权限吗?', function(r){
if (r){ //这个function也无法正常获取functionid
//获取当前选中的functionid
var flist = '';
$.each($('#permissiondg').treegrid('getChecked'),function(index, item) {
flist += item.id+',';
});
alert(flist)
//请求服务器更新权限配置
/*$.post("permission/save",{'flist':flist,'roleid':checkroleid},function(result){
if("success" == result){
$.messager.alert('提示','保存成功!','info');
}else{
$.messager.alert('提示','保存失败!','error');
}
},'html').error(function(){
$.messager.alert('错误','服务器异常!','error');
});*/
}
});
}
function reset() {
/*
* 关闭父页面的选项卡 var curTab = parent.$('#mainTabs').tabs('getSelected'); var
* currentTabIndex = parent.$('#mainTabs').tabs('getTabIndex',curTab);
* parent.$('#mainTabs').tabs('close',currentTabIndex);
*/
$('#permissiondg').datagrid('clearChecked');
$('#permissiondg').treegrid('reload');
}
源代码 permissionmanage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="container">
<ul>
<li class="jslist">
<ul>
<c:forEach items="${roles }" var="role">
<li>
<div id="sidebar">
<a href="javascript:;" onclick="getFunctionsByRoleId(${role.id},'${ role.rolename}')">
+${ role.rolename} </a>
</div>
</li>
</c:forEach>
</ul>
</li>
<li class="iframeli">
<table id="permissiondg"></table>
</li>
</ul>
</div>
<link href="css/permission.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="js/permission.js"></script>
源代码 PermissionController.java
@Controller
@RequestMapping("permission")
public class PermissionController extends BaseController{
@Autowired
private PermissionService ps;
@Autowired
private FunctionService fs;
@Autowired
private RoleService rs;
//返回权限管理页面
@RequestMapping("manage")
public String manage(Model model) throws Exception {
List<Role> roles = rs.getRoles();
model.addAttribute("roles", roles);
return "permissionmanage";
}
// 根据角色返回所有的功能列表,并且选中当前角色具有的功能
@RequestMapping(value = "list/{roleid}", method = RequestMethod.POST)
@ResponseBody
public Object list(@PathVariable(value = "roleid") Long roleid) throws Exception {
Role role =new Role();
role.setId(roleid);
//获取所有功能
List<Function> allFunctions=fs.getAllFuntions();
//获取角色功能
List<Function> functions=fs.getFuntionsByRole(role);
for (Function function : functions) {
for (int i = 0; i < allFunctions.size(); i++) {
if (function.getId() == allFunctions.get(i).getId()) {
allFunctions.get(i).setChecked(true);
}
}
}
List<FunctionEasyUITreeGrid> treeGrids = new ArrayList <FunctionEasyUITreeGrid> ();
functionToEasyTreeGrid(allFunctions,treeGrids,0);
return treeGrids;
}
//修改权限
@ResponseBody
@RequestMapping(value = "save",method=RequestMethod.POST)
public String functionUpdate(String flist, Permission permission,HttpSession session) throws Exception {
User user = this.getSessionUser(session);
permission.setCreatedby(user.getUsercode());
permission.setCreationtime(new Date());
permission.setIsstart(1);
if(permission.getRoleid()==null){
throw new Exception("roid id is null when save permission");
}
if(ps.TXoperatePermission(permission,flist)>=1){
this.addLogs(user, "用户修改角色ID:"+permission.getRoleid()+" 的对应的功能ID为:"+flist);
return OPERATE_SUCCESS;
}else{
return OPERATE_FAILURE;
}
}
//递归将javaBean改成TreeGird要求的对象
private void functionToEasyTreeGrid(List<Function> functions,List<FunctionEasyUITreeGrid> treeGrids,int parentId){
if(functions!=null){
for(Function function:functions){
FunctionEasyUITreeGrid treeGrid =new FunctionEasyUITreeGrid();
if(function.getParentid()==parentId){
treeGrid=function.toFunctionEasyUITreeGrid();
functionToEasyTreeGrid(functions,treeGrid.getChildren(),function.getId().intValue());
treeGrids.add(treeGrid);
}
}
}
}
}
源代码 FunctionEasyUITreeGrid .java
public class FunctionEasyUITreeGrid {
private Long id;
private String functioncode;
private String functionname;
private Date creationtime;
private String createdby;
private Date lastupdatetime;
private String funcurl;
private Integer isstart;
private Integer parentid;
private Boolean checked;
private List <FunctionEasyUITreeGrid> children =new ArrayList <FunctionEasyUITreeGrid>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFunctioncode() {
return functioncode;
}
public void setFunctioncode(String functioncode) {
this.functioncode = functioncode;
}
public String getFunctionname() {
return functionname;
}
public void setFunctionname(String functionname) {
this.functionname = functionname;
}
public Date getCreationtime() {
return creationtime;
}
public void setCreationtime(Date creationtime) {
this.creationtime = creationtime;
}
public String getCreatedby() {
return createdby;
}
public void setCreatedby(String createdby) {
this.createdby = createdby;
}
public Date getLastupdatetime() {
return lastupdatetime;
}
public void setLastupdatetime(Date lastupdatetime) {
this.lastupdatetime = lastupdatetime;
}
public String getFuncurl() {
return funcurl;
}
public void setFuncurl(String funcurl) {
this.funcurl = funcurl;
}
public Integer getIsstart() {
return isstart;
}
public void setIsstart(Integer isstart) {
this.isstart = isstart;
}
public Integer getParentid() {
return parentid;
}
public void setParentid(Integer parentid) {
this.parentid = parentid;
}
public Boolean isChecked() {
return checked;
}
public void setChecked(Boolean checked) {
this.checked = checked;
}
public List<FunctionEasyUITreeGrid> getChildren() {
return children;
}
public void setChildren(List<FunctionEasyUITreeGrid> children) {
this.children = children;
}
}