jQuery EasyUI DataGrid Checkbox 数据设定与取值

栏目: jQuery · 发布时间: 7年前

内容简介:jQuery EasyUI DataGrid Checkbox 数据设定与取值

纯粹做个记录,以免日后忘记该怎么设定。

这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的该笔数据列的 Checkbox 设定为 Checked,另外就是两种 Checkbox 设定方式下如何取得有勾选的数据。

有关 jQuery EasyUI DataGrid 的相关资料,可以前往官网查看,

jQuery EasyUI 官网

jQuery EasyUI Documentation

DataGrid Demo

CheckBox select on DataGrid

使用的范例 JSON 数据:

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 原始码内容

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 设定

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. });

设定完成后的页面如下:

jQuery EasyUI DataGrid Checkbox 数据设定与取值

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

jQuery EasyUI DataGrid Checkbox 数据设定与取值

修改后的 DataGrid 设定程序如下:

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 都为勾选,

jQuery EasyUI DataGrid Checkbox 数据设定与取值

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

jQuery EasyUI DataGrid Checkbox 数据设定与取值

程序如下:

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. });

最后的执行结果:

jQuery EasyUI DataGrid Checkbox 数据设定与取值 jQuery EasyUI DataGrid Checkbox 数据设定与取值 jQuery EasyUI DataGrid Checkbox 数据设定与取值

方式一的完整 Javascript 程序:

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.  
29. $( '#ButonGetCheck' ).click( function (){
30. var   checkedItems = $( '#dg' ).datagrid( 'getChecked' );
31. var   names = [];
32. $.each(checkedItems,  function (index, item){
33. names.push(item.productname);
34. });               
35. console.log(names.join( "," ));
36. });

设定方式二:不使用预设的设定方式与 Method

这个设定的方式应该是在 jQuery EasyUI 1.3 之前所使用的,因为早期的版本并没有足够的设定方式与 Method 让使用者可以去增加 Checkbox 的项目,这边所使用的 JSON 数据以及 HTML 原始码都跟设定方式一的内容是一样的,不一样的地方在于 Javascript 程序的部份,

先看 DataGrid 的设定

01. $( '#dg' ).datagrid({
02. title:  'CheckBox Selection on DataGrid' ,
03. url:  'datagrid_data3.json' ,
04. width:  '700' ,
05. rownumbers:  true ,
06. columns:[[
07. {field: 'checked' ,formatter: function (value,row,index){
08. if (row.checked){
09. return   '<input type="checkbox" name="DataGridCheckbox" checked="checked">' ;
10. }
11. else {
12. return   '<input type="checkbox" name="DataGridCheckbox">' ;
13. }
14. }},
15. { field:  'productid' , title:  'productid'   },
16. { field:  'productname' , title:  'productname'   },
17. { field:  'unitcost' , title:  'unitcost'   },
18. { field:  'status' , title:  'status'   },
19. { field:  'listprice' , title:  'listprice'   },
20. { field:  'itemid' , title:  'itemid'   }
21. ]],
22. singleSelect:  true
23. });

这边的 Checkbox 设定则是使用 formatter 的方式,类似 ASP .NET GridView 的 ItemTemplate 设定方式,判断每个数据列的 checked 字段数据是否为 true,如 checked 为 true 则回传一个有勾选的 Checkbox,不过这样的设定方式就不会在 DataGrid 的字段名称列出现可让使用者全选的 Checkbox,如需要的话就必须再用其它的方式来做设定,不过这边就不介绍,

jQuery EasyUI DataGrid Checkbox 数据设定与取值

接着就是取得有勾选的数据值,因为这里是使用自己加入 checkbox tag 的方式,所以就无法使用 DataGrid 所提供的 getChecked 方法,而是必须要另外写程序来处理,可以使用 extend 的方式去扩充 DataGrid 的方法,

程序如下:

01. $.extend($.fn.datagrid.methods, {
02. getChecked:  function   (jq) {
03. var   rr = [];
04. var   rows = jq.datagrid( 'getRows' );
05. jq.datagrid( 'getPanel' ).find( 'div.datagrid-cell input:checked' ).each( function   () {
06. var   index = $( this ).parents( 'tr:first' ).attr( 'datagrid-row-index' );
07. rr.push(rows[index]);
08. });
09. return   rr;
10. }
11. });

这么一来在取得 DataGrid 的 Checkbox 有勾选的数据值就可以沿用方式一的程序,

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. });

执行结果:

jQuery EasyUI DataGrid Checkbox 数据设定与取值 jQuery EasyUI DataGrid Checkbox 数据设定与取值 jQuery EasyUI DataGrid Checkbox 数据设定与取值

完整 Javascript 程序如下:

01. $( function (){
02. $( '#dg' ).datagrid({
03. title:  'CheckBox Selection on DataGrid' ,
04. url:  'datagrid_data3.json' ,
05. width:  '700' ,
06. rownumbers:  true ,
07. columns:[[
08. {field: 'checked' ,formatter: function (value,row,index){
09. if (row.checked){
10. return   '<input type="checkbox" name="DataGridCheckbox" checked="checked">' ;
11. }
12. else {
13. return   '<input type="checkbox" name="DataGridCheckbox">' ;
14. }
15. }},
16. { field:  'productid' , title:  'productid'   },
17. { field:  'productname' , title:  'productname'   },
18. { field:  'unitcost' , title:  'unitcost'   },
19. { field:  'status' , title:  'status'   },
20. { field:  'listprice' , title:  'listprice'   },
21. { field:  'itemid' , title:  'itemid'   }
22. ]],
23. singleSelect:  true
24. });
25.  
26. $( '#ButonGetCheck' ).click( function (){
27. var   checkedItems = $( '#dg' ).datagrid( 'getChecked' );
28. var   names = [];
29. $.each(checkedItems,  function (index, item){
30. names.push(item.productname);
31. });               
32. console.log(names.join( "," ));
33. });
34. });
35.  
36. $.extend($.fn.datagrid.methods, {
37. getChecked:  function   (jq) {
38. var   rr = [];
39. var   rows = jq.datagrid( 'getRows' );
40. jq.datagrid( 'getPanel' ).find( 'div.datagrid-cell input:checked' ).each( function   () {
41. var   index = $( this ).parents( 'tr:first' ).attr( 'datagrid-row-index' );
42. rr.push(rows[index]);
43. });
44. return   rr;
45. }
46. });

以上所述就是小编给大家介绍的《jQuery EasyUI DataGrid Checkbox 数据设定与取值》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

成功由我

成功由我

刘世英、彭征 / 湖南人民出版社 / 2010-2 / 28.00元

《成功由我:李彦宏快乐成功之道》讲述:他,18岁高分考入北京大学,毕业后到美国名校学习最热门的计算机专业,然后闯荡于华尔街和硅谷这两大金融和技术圣地,31岁回国创立百度……到如今身价数十亿美元,领导的百度发展成为全球第二大搜索引擎,在国内搜索市场占据近八成的市场份额,将有“上帝”之称的Google抛在身后,最近他又掀起了“框计算”风暴,并雄心万丈宣称“未来十年,要让百度在全球一半以上国家成为家喻户......一起来看看 《成功由我》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具