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;
}
}
...全文
546 5 打赏 收藏 转发到动态 举报
写回复
用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里才有效
Go 旅城通票 2016-12-18
  • 打赏
  • 举报
回复
$('#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 主题
SYPRO示例项目源码和EasyUI入门视频教程,视频在我的百度网盘中,可以下载学习: sypro示例程序(springMvc+hibernate4+easyui) sshe示例程序(struts2+spring3+hibernate4+easyui)(Maven构建) easyui1.2.6整站文件.zip jquery1.7.2中文API修正版.chm jquery.easyui-1.2.5源码未压缩版.rar jquery-easyui-1.2.6.zip JQuery-esqyUI中文-1.2.5API.CHM 第01课(大概介绍一下easyui,和组织的地址,官方网站等) 第02课(介绍easyloader组件和easyui怎样使用) 第03课(parser组件panel组件) 第04课(通过用户登录来演示dialog、ajax的使用,serialize方法的使用,前后台怎样交互等) 第05课(讲解easyui的form控件、validatebox控件、怎样跟后台交互) 第06课(讲解easyui的layout的使用) 第07课(讲解datagrid的基本应用,后台交互,排序功能) 第08课(讲解datagrid的查询,toolbar的多种创建方式,清空查询条件,扩展一个form序列化object的方法,load、reload方法的使用和区别,datetimebox初始化时需要注意的问题) 第09课(讲解datagrid的行编辑模式,增加、删除、修改,扩展editor的类型,扩展datagrid,增加动态改变editor属性,简单介绍了form的load,简单介绍了弹窗编辑模式,讲解了双击行开启编辑模式,选择行开启编辑模式,取消编辑模式。讲解insertRow、appendRow、getRowIndex、getSelections、unselectAll、rejectChanges等方法的使用和区别) 第10课(datagrid增加、删除、修改功能,结合后台讲解,怎样获得增加或删除的数据,怎样传递到后台,如果添加或修改不成功,怎样回滚操作,后台操作成功,保持状态等。和清空datagrid的简单方法。) 第11课(介绍一些easyui群,介绍easyui论坛等信息。datagrid冻结列讲解,datagrid右键菜单讲解,forzenColumns与fitColumns的应用) 第12课(讲解datagrid的formatter的应用,格式化时间、行样式、列样式、表头居中,内容居右等应用)(formatter的提示功能,由于录制问题,没有录制到提示信息,所以大家自己去测试一下吧,不能重新录制了。) 第13课(讲解easyui更换主题皮肤) 第14课(讲解tree的应用,tree的初始化方式、异步tree都需要那些配置、tree的lines、url、checkbox、属性,onLoadSuccess事件,getChecked方法的应用) 第15课(继续讲解tree的使用,介绍tree需要的JSON格式、常用事件和方法,结合tabs的使用等) 第16课(tree数据载入后自动选中想要选择的节点、tree的iconCls需要注意的地方、js中不可以用search当function名称、combo组件的基本使用) 第17课(combobox属性介绍、combobox的autocomplete功能、联动功能,本地过滤和远程过滤功能、combobox方法介绍。简要描述datagrid行编辑模式中editor类型是combobox需要注意的问题。简要描述easyui1.3的data-options初始化方式。) 第18课(讲解combotree组件的使用) 第19课(讲解combogrid组件和treegrid组件的使用) 第20课(讲解PropertyGrid组件的使用)

87,910

社区成员

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

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