博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery EasyUI DataGrid Checkbox 数据设定与取值
阅读量:5865 次
发布时间:2019-06-19

本文共 7646 字,大约阅读时间需要 25 分钟。

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

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

有关 jQuery EasyUI 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.
});

设定完成后的页面如下:

 

 

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

 

 

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

 

 

程序如下:

 

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 程序:

 

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 的方式,类似 .NET GridView 的 ItemTemplate 设定方式,判断每个数据列的 checked 字段数据是否为 true,如 checked 为 true 则回传一个有勾选的 Checkbox,不过这样的设定方式就不会在 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.
});

执行结果:

 

 

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

转载地址:http://vsynx.baihongyu.com/

你可能感兴趣的文章
MathType输入矩阵或者向量的注意事项
查看>>
SAP MM 设置某个物料类型物料基本数据1视图中的‘Old material number’字段必须输入...
查看>>
10g,11g中数据库静默安装中的细小差别
查看>>
【impdp】IMPDP中的TRANSFORM参数--【数据泵】EXPDP导出表结构(真实案例)后传
查看>>
坑爹的 open SSh for window,必须吐槽下
查看>>
JavaScript 语句
查看>>
[20160726]行链接行迁移与ITL槽.txt
查看>>
Java---实力弹弹球,弹弹弹
查看>>
Performance Testing: Self-built Databases vs. ApsaraDB for RDS
查看>>
Socket连接超时(转)
查看>>
MySQL---数据库从入门走向大神系列(十三)-BasicDataSource创建DataSource(DBCP连接池配置)...
查看>>
SVNKit getFileFromSVN
查看>>
第六章——根据执行计划优化性能(1)——理解哈希、合并、嵌套循环连接策略...
查看>>
android app启动过程(转)
查看>>
SharePoint 2013 文档库中PPT转换PDF
查看>>
微信小程序把玩(三十一)wx.uploadFile(object), wx.downloadFile(object) API
查看>>
方倍工作室微信相关代码下载方法
查看>>
三位女科学家联手,用AI算法将乳腺癌的筛查速度提高了100倍
查看>>
四款好用的免费直播编码推流软件
查看>>
Go语言大神亲述:历七劫方可成为程序员!
查看>>