easyui treegrid checkbox 无法清除

jees5555 2016-12-17 12:16:16
现象
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;
}
}
...全文
607 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_21302299 2017-08-04
  • 打赏
  • 举报
回复
改为这样: ------------------------------- // 清除选中状态 $('#permissiondg').treegrid('clearChecked'); //这句有问题!!!! // 清空数据 $('#permissiondg').treegrid({ data : null });
qq_36201508 2017-03-21
  • 打赏
  • 举报
回复
我现在也遇到这种情况一直没找到原因,请问你解决了吗?
jees5555 2017-01-17
  • 打赏
  • 举报
回复
没有满意回复,但分还是给吧
jees5555 2016-12-21
  • 打赏
  • 举报
回复
这样的确是可以清除了,可是我想在选择不同的角色之后加载新的treegrid,如果不在新的加载之前清除的话 那么原来checked的字段会一直check下去 datagrid 是可以先clear 再加载新的,而不只是在 onloadsuccess里才有效
  • 打赏
  • 举报
回复
$('#permissiondg').treegrid('clearChecked'); //这句有问题!!!! 放到treegrid的onLoadSuccess中执行,要不ajax都没返回数据你清除不了
基于EasyUI 官方的帮助。 Application 使用easyUI创建一个CRUD的应用 使用easyUI创建一个CRUD DataGrid 使用easyUI展开行详细编辑form创建CRUD应用 使用jQuery easyUI 创建一个 RSS Feed阅读器 Drag and Drop easyUI 基础的拖动和放置 使用easyUI创建一个拖放的购物车 使用easyUI创建一个课程表 Menu and Button 使用easyUI创建简单的菜单 使用easyUI创建Link Button 使用easyUI创建Menu Button 使用easyUI创建Split Button Layout 使用easyUI创建一个border layout在你的web页面 使用easyUI在panel中创建复杂布局 使用easyUI创建折叠面板 使用easyUI创建Tabs标签 使用easyui创建tabs组件和动态添加 使用easyUI创建一个自动播放的tabs 使用easyUI创建XP风格左侧面板 DataGrid 使用easyUI转换HTML table到datagrid 使用easyUI给datagrid添加pagination 使用easyUI添加查询功能在datagrid 使用easyUI 添加toolbar到datagrid 使用easyUI 创建复杂的toolbar到datagrid 使用easyUI 为datagrid冻结列 使用easyUI 动态改变datagrid的columns 使用easyUI 格式化datagrideasyUI 添加排序到datagrid easyUI 自定义排序datagrid easyUI 添加CheckBox选择到DataGrid easyUI自定义DataGrid分页栏 启用DataGrid行内编辑器 继承扩展DataGrid的editors easyUI在可编辑的datagrid中计算两列的值 easyUI合并DataGrid单元格 easyUI为datagrid创建自定义视图 easyUI datagrid显示摘要信息在页脚 easyUI 根据一些条件改变DataGrid 行背景颜色 easyUI 创建一个 Property Grid easyUI 展开DataGrid里面的行显示详细信息 easyUI 在主datagrid上创建子datagrid Window easyUI 我的第一个window easyUI 自定义window工具 easyUI window和布局 easyUI 创建Dialog对话框 easyUI Dialog自定义Toolbar和button Tree easyUI 从标记创建Tree easyUI 创建异步Tree easyUI 附加tree节点到tree easyUI 创建Tree和复选框Tree Node easyUI 拖动(Drag)和放置(Drop)Tree easyUI 加载parent/child节点到tree 转换tree标准格式数据 easyUI 创建一个基础的TreeGrid easyUI 创建复杂TreeGrid Form easyUI 通过ajax的方式提交Form easyUI 添加ComboTree 字段到一个 form easyui Form验证 easyUI 格式化ComboBox easyui 过滤ComboGrid 扩展 easyui DWR加载 easyUI 主题

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧