Easyui的tree设置了checkbox,怎么样可以实现点击按钮全选checkbox和取消全选checkbox?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Easyui的tree设置了checkbox,怎么样可以实现点击按钮全选checkbox和取消全选checkbox?相关的知识,希望对你有一定的参考价值。

我用easyui做了个tree ,设置显示每个节点的checkbox,现在有个需求,要点击按钮全部选中checkbox!怎么实现.
我是用easyui tree的check方法来循环选中,但是如果节点稍微多点,点击全选就会有延迟才选中所有节点的checkbox,有什么办法可以点击按钮让tree的checkbox全部选中,不影响效率.不会有延迟.
就是因为没有级联 所以我做的那个循环勾选才会有延迟...

默认的checkbox是有级联的么,就是点选父节点,全选所有子节点,所以你要全选、取消全选,只要获取所有的根节点,再选中、取消这些根节点就行了么,记得有个获取根节点的方法的,getRoot和getRoots吧追问

就是因为没有级联 所以我做的那个循环勾选才会有延迟...

如果有级联,我直接选根节点勾选就好了...
可是需求不能有级联效果...

参考技术A 加上级联属性,点击了所有父就会全选。

jquery easyui datagrid 怎么设置checkbox列属性

参考技术A 纯粹做个记录,以免日后忘记该怎么设定。
这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的该笔数据列的 Checkbox 设定为 Checked,另外就是两种 Checkbox 设定方式下如何取得有勾选的数据。

有关 jQuery EasyUI DataGrid 的相关资料,可以前往官网查看,
jQuery EasyUI 官网
jQuery EasyUI Documentation
DataGrid Demo
CheckBox select on DataGrid

使用的范例 JSON 数据:

view source print ?
01.
02. "total" : 4,
03. "rows" : [
04.
05. "productid" : "FI-SW-01" ,
06. "productname" : "Koi" ,
07. "unitcost" : 10.00,
08. "status" : "P" ,
09. "listprice" : 36.50,
10. "attr1" : "Large" ,
11. "itemid" : "EST-1" ,
12. "checked" : true
13. ,
14.
15. "productid" : "K9-DL-01" ,
16. "productname" : "Dalmation" ,
17. "unitcost" : 12.00,
18. "status" : "P" ,
19. "listprice" : 18.50,
20. "attr1" : "Spotted Adult Female" ,
21. "itemid" : "EST-10" ,
22. "checked" : true
23. ,
24.
25. "productid" : "RP-SN-01" ,
26. "productname" : "Rattlesnake" ,
27. "unitcost" : 12.00,
28. "status" : "P" ,
29. "listprice" : 38.50,
30. "attr1" : "Venomless" ,
31. "itemid" : "EST-11" ,
32. "checked" : true
33. ,
34.
35. "productid" : "RP-SN-01" ,
36. "productname" : "Rattlesnake" ,
37. "unitcost" : 12.00,
38. "status" : "P" ,
39. "listprice" : 26.50,
40. "attr1" : "Rattleless" ,
41. "itemid" : "EST-12" ,
42. "checked" : false
43.
44. ]
45.
设定方式一:使用预设的设定方式
网页的 HTML 原始码内容

view source print ?
01. < body >
02. < h2 >Custom CheckBox on DataGrid</ h2 >
03.
04. < input type = "button" id = "ButonGetCheck" value = "Get Checked" />
05. < br />< br />
06.
07. < table id = "dg" ></ table >
08.
09. </ body >
我是习惯把 DataGrid 的相关设定放在 Javascript 程序中,因为这会比直接在 HTML 的 Table Tag 使用属性设定的方式还具有弹性,
Javascript 程序中的 DataGrid 设定

view source print ?
01. $( '#dg' ).datagrid(
02. title: 'CheckBox Selection on DataGrid' ,
03. url: 'datagrid_data3.json' ,
04. width: '700' ,
05. rownumbers: true ,
06. columns:[[
07. field: 'ck' ,checkbox: true ,
08. field: 'productid' , title: 'productid' ,
09. field: 'productname' , title: 'productname' ,
10. field: 'unitcost' , title: 'unitcost' ,
11. field: 'status' , title: 'status' ,
12. field: 'listprice' , title: 'listprice' ,
13. field: 'itemid' , title: 'itemid'
14. ]],
15. singleSelect: false ,
16. selectOnCheck: true ,
17. checkOnSelect: true
18. );
设定完成后的页面如下:

但是我们的 JSON 数据里有个字段是「checked」,这个字段的数据 true / false 就是用来设定 Checkbox 是否勾选,而设定的动作必须要在 DataGrid 加载数据完成后再去执行,这边会使用到 jQuery 的 each 去逐一检查每个数据列的的数据内容,假如 checked 为 true,那就使用「checkRow」这个 Method 将该数据列的 Checkbox 设为勾选的状态,

修改后的 DataGrid 设定程序如下:
view source print ?
01. $( '#dg' ).datagrid(
02. title: 'CheckBox Selection on DataGrid' ,
03. url: 'datagrid_data3.json' ,
04. width: '700' ,
05. rownumbers: true ,
06. columns:[[
07. field: 'ck' ,checkbox: true ,
08. field: 'productid' , title: 'productid' ,
09. field: 'productname' , title: 'productname' ,
10. field: 'unitcost' , title: 'unitcost' ,
11. field: 'status' , title: 'status' ,
12. field: 'listprice' , title: 'listprice' ,
13. field: 'itemid' , title: 'itemid'
14. ]],
15. singleSelect: false ,
16. selectOnCheck: true ,
17. checkOnSelect: true ,
18. onLoadSuccess: function (data)
19. if (data)
20. $.each(data.rows, function (index, item)
21. if (item.checked)
22. $( '#dg' ).datagrid( 'checkRow' , index);
23.
24. );
25.
26.
27. );
重新执行页面后就可以看到 checked 为 true 的数据列 Checkbox 都为勾选,

再来就是要取得勾选的数据值,这边也是使用 DataGrid 所提供的 Method「getChecked」 www.it165.net

程序如下:
view source print ?
1. $( '#ButonGetCheck' ).click( function ()
2. var checkedItems = $( '#dg' ).datagrid( 'getChecked' );
3. var names = [];
4. $.each(checkedItems, function (index, item)
5. names.push(item.productname);
6. );
7. console.log(names.join( "," ));
8. );
最后的执行结果:

方式一的完整 Javascript 程序:
view source print ?
01. $( '#dg' ).datagrid(
02. title: 'CheckBox Selection on DataGrid' ,
03. url: 'datagrid_data3.json' ,
04. width: '700' ,
05. rownumbers: true ,
06. columns:[[
07. field: 'ck' ,checkbox: true ,
08. field: 'productid' , title: 'productid' ,
09. field: 'productname' , title: 'productname' ,
10. field: 'unitcost' , title: 'unitcost' ,
11. field: 'status' , title: 'status' ,
12. field: 'listprice' , title: 'listprice' ,
13. field: 'itemid' , title: 'itemid'
14. ]],
15. singleSelect: false ,
16. selectOnCheck: true ,
17. checkOnSelect: true ,
18. onLoadSuccess: function (data)
19. if (data)
20. $.each(data.rows, function (index, item)
21. if (item.checked)
22. $( '#dg' ).datagrid( 'checkRow' , index);
23.
24. );
25.
26.
27. );
28.本回答被提问者和网友采纳

以上是关于Easyui的tree设置了checkbox,怎么样可以实现点击按钮全选checkbox和取消全选checkbox?的主要内容,如果未能解决你的问题,请参考以下文章

获取EasyUI的treegrid的checkbox所有已勾选的数据

jquery easyui datagrid 怎么设置checkbox列属性

easyui tree loadFilter的使用

EasyUI 中的tree 如何定义 叶节点 才有复选框 onlyLeafCheck 属性为true 不管用 都没有复选框了

easyui 扩展 之 Tree的simpleData加载

easyui tree 级联从三种状态变为两种状态