var data = [{
"id": 1,
"checked":true,
"text": "系统菜单",
"children": [{
"id": 11,
"text": "用户管理",
"checked":true,
"children": [{
"id": 19,
"text": "增加用户"
}, {
"id": 3,
"text": "修改用户"
}, {
"id": 5,
"text": "删除用户",
"checked":true
}]
}, {
"id": 12,
"text": "角色管理",
"children": [{
"id": 13,
"text": "增加角色",
"checked":true
}, {
"id": 3,
"text": "修改角色"
}, {
"id": 5,
"text": "删除角色"
}]
}]
}, {
"id": 2,
"text": "其他",
"state": "closed"
}]; $(function () {
$("#tt").tree({
data: data,
checkbox: true,
cascadeCheck: false,
onCheck: function (node, checked) {
if (checked) {
var parentNode = $("#tt").tree('getParent', node.target);
if (parentNode != null) {
$("#tt").tree('check', parentNode.target);
}
} else {
var childNode = $("#tt").tree('getChildren', node.target);
if (childNode.length > 0) {
for (var i = 0; i < childNode.length; i++) {
$("#tt").tree('uncheck', childNode[i].target);
}
}
}
}
});
}); function getChecked()
{
var arr = [];
var checkeds = $('#tt').tree('getChecked', 'checked');
for (var i = 0; i < checkeds.length; i++) {
arr.push(checkeds[i].id);
}
alert(arr.join(','));
}
         <ul id="tt"></ul>
<input type="button" value="获取选中" onclick="getChecked()" />

但是有时候我们从后台返回list,

然后将list转换成一个Tree.   easyui根据这个数据生成一个树.

那么如何将list转换成一棵树的基本代码就要查看上面一片博客了(http://www.cnblogs.com/guoyansi19900907/p/4701746.html)

现在给出从数据库获取数据,根据指定数据来控制树的选中和未选中状态.

下面这段代码是将list的数据转换成tree,并且加入checked=true或false来控制选中,未选中.

 /**
* checkbox 树
* @param rows
* @param param
* @returns {Array}
*/
function convertCheckbox(rows,param){
/*for(var gys=0;gys<rows.length;gys++){
console.log(rows[gys]["if_fuquan"]);
}*/
function getTreeCheck(n){
if(n==1){
return true;
}else{
return false;
}
} function exists(rows, parentId){
for(var i=0; i<rows.length; i++){
if (rows[i][param.id] == parentId) return true;
}
return false;
} var nodes = [];
// 获取顶级的node
for(var i=0; i<rows.length; i++){
var row = rows[i];
if (!exists(rows, row[param.parentId])){ //gys 给顶层添加链接
var topNode={id:row[param.id],text:row[param.name],checked:getTreeCheck(row[param.checked])};
nodes.push(topNode); // nodes.push({
//id:row.id,
//text:row.name
//});
}
} var toDo = [];
for(var i=0; i<nodes.length; i++){
toDo.push(nodes[i]);
}
while(toDo.length){//循环toDo当toDo长度为零时停止
var node = toDo.shift();//删除第一个元素,然后返回第一个元素,改变数组长度
// 获取子节点
for(var i=0; i<rows.length; i++){
var row = rows[i];
if (row[param.parentId] == node.id){
var child = {id:row[param.id],text:row[param.name]};
// gys 添加链接 //if(row[param.checked]){
//alert(row[param.checked]);
child.checked=getTreeCheck(row[param.checked]);
//}
if (node.children){
node.children.push(child);
} else {
node.children = [child];
}
toDo.push(child);
}
}
}
return nodes;
}
 var objTree= $("#fuquanTree");
objTree.tree({
url:"data.json",
method: 'get',
checkbox:true,
cascadeCheck: false,
loadFilter:function(data){//这里的privilege_id,privilege_name,if_fuquan,parent_privilege_id对应的都是数据库的字段.
return convertCheckbox(data,{id:"privilege_id",name:"privilege_name",checked:"if_fuquan",parentId:"parent_privilege_id"});
},
onCheck: function (node, checked) {
if (checked) {
var parentNode =objTree.tree('getParent', node.target);
if (parentNode != null) {//选中子集时,父级没选中就选中父级
objTree.tree('check', parentNode.target);
}
} else {//取消选中,如果有子集就取消选中子集
var childNode = objTree.tree('getChildren', node.target);
if (childNode.length > 0) {
for (var i = 0; i < childNode.length; i++) {
objTree.tree('uncheck', childNode[i].target);
}
}
}
}
});

easyui中带checkbox框的tree的更多相关文章

  1. easy-ui 中的事件触发 (tree)

    easy-ui可以为插件添加事件,但没有触发事件的处理(可能是未找到),所以有时候,我们需要通过程序去触发某个插件指定的事件时,就一筹莫展了 以Tree插件为例 ,添加了onClick事件 jQuer ...

  2. Jquery EasyUI 中ValidateBox验证框使用讲解(转)

    Validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效.如果用户输入了无效的值,它将会更改输入框的背景颜色,并且显示警告图标和提示信息.该验证框可以结合form(表单)插件并防止表 ...

  3. Jquery EasyUI 中ValidateBox验证框使用讲解

    来源素文宅博客:http://blog.yoodb.com/ Validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效.如果用户输入了无效的值,它将会更改输入框的背景颜色,并且显示警 ...

  4. easyui combobox 带 checkbox

    $('#cc').combobox({ url:'combobox_data1.json', method:'get', valueField:'id', textField:'text', pane ...

  5. easyui combobox 带 checkbox 亲自验证

    $('#cc').combobox({                url:'combobox_data1.json',                method:'get',           ...

  6. easyui中导航菜单accordion与tree的动态添加

    博客分类: Java Web开发   Js代码   $.parser.parse(); $.ajax({ url:my.bp()+'/main/menuaction!createMenu.action ...

  7. css 去除 a,checkbox 框 出现虚线

    在开发过程中遇到checkbox框,第一次遇到还以为是系统自带的是这样 后来发现不是那样, 我们可以在使用css 去掉出现的虚线框,以下是我的解决方案代码: /* checkbox 去掉虚框*/:fo ...

  8. 第二百一十一节,jQuery EasyUI,ValidateBox(验证框)组件

    jQuery EasyUI,ValidateBox(验证框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 4.自定义验证 本节课重点了解 EasyUI 中 ValidateBox(验证框 ...

  9. 第二百一十节,jQuery EasyUI,SearchBox(搜索框)组件

    jQuery EasyUI,SearchBox(搜索框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 SearchBox(搜索框)组件的使用方法,这个组 ...

随机推荐

  1. OpenJudge计算概论-能被3,5,7整除的数

    /*===================================== 能被3,5,7整除的数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个整数,判断它能否被3,5, ...

  2. WebApiThrottle限流框架

    ASP.NET Web API Throttling handler is designed to control the rate of requests that clients can make ...

  3. PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰

    有朋友下载了PHP5.3,PHP5.4版本想加载mysql支持的时候发现没有libmysql.dll文件,无法完成mysql配置,其实PHP5.3版本开始,使用mysqlnd库,不再使用libmysq ...

  4. python数据类型之str用法

    1.首字母大写 语法:S.capitalize() -> str title = "today is a good day" title_ca = title.capital ...

  5. Android: 在 TextView 里使用删除线

    Android: 在 TextView 里使用删除线 分类: Android2014-09-25 13:17 3431人阅读 评论(0) 收藏 举报 以编程的方式添给 TextView 添加删除线: ...

  6. Restfull API 示例

    什么是Restfull API Restfull API 从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest rest 不是一个技术,也不是一个协议 rest 指的是一组架构约束条件 ...

  7. startActivityForResult用法详解

    一.如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode ...

  8. ASP.NET环境下配置FCKEditor并上传图片及其它文件

    文章转自:http://blog.sina.com.cn/s/blog_568e66230100hy6a.html FCKEditor于2009年被更名为新一代的CKEditor和CKFinder,见 ...

  9. IntelliJ IDEA通过Spring配置连接MySQL数据库

    先从菜单View→Tool Windows→Database打开数据库工具窗口,如下图所示: 点击Database工具窗口左上角添加按钮"+",选择Import from sour ...

  10. Linux中文件描述符fd和文件指针flip的理解

    转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通 ...