easyui datagrid自定义复选框,实现审批后隐藏复选框,多选和全选的问题
$(function () {
var IsCheckFlag = true;
$('#WaitPactList').datagrid({
url: '@Url.Action("GetWaitPactList")',
width:SetGridWidthSub(70),
methord: 'post',
height: SetGridHeightSub(160),
fitColumns: true,
sortName: 'CreateDate',
sortOrder: 'desc',
idField: 'Id',
pageSize: 15,
pageList: [15, 20, 30, 40, 50],
pagination: true,
striped: true, //奇偶行是否区分
singleSelect: false,//单选模式
//checkOnSelect: true,
//selectOnCheck: true,
checkOnSelect: false,
selectOnCheck: false,
columns: [[
//{ field: 'Id', title: 'Id', width: 80, checkbox: true },
{ field: 'Id', title: 'Id', width: 80, hidden: true },
{ field: 'PactName', title: '合同名称', width: 80, sortable: true },
{ field: 'PactNum', title: '合同编号', width: 80, sortable: true },
{ field: 'CustomerName', title: '客户名称', width: 80, sortable: true },
{ field: 'MUser_UserName', title: '客户经理', width: 80, sortable: true },
{
field: 'IsSeal', title: '状态', align: 'center', width: 80, sortable: false,
formatter: function (value, row, index) {
if (row.IsSeal == "0") {
return "未盖章";
} else if (row.IsSeal == "1") {
return "已盖章";
}
}
},
{
field: 'option', title: '<input type="checkbox" id="ck_all"/>', align: 'center', width: 80, sortable: false,
formatter: function (value, row, index) {
if (row.IsSeal == "0") {
return '<input type="checkbox" data-category="'+row.Id+'" name="ckId" value="' + row.IsSeal + '" />';
} else if (row.IsSeal == "1") {
return '';
}
}
},
]],
onLoadSuccess: function (data) {
$('#GetWaitPactList').datagrid('clearChecked');
//点击全选
$("#ck_all").click(function () {
if ($(this)[0].checked) {
var names = document.getElementsByName("ckId");
for (var i = 0; i < names.length; i++) {
names[i].checked = true;
var arr = $('#WaitPactList').datagrid('getData');
for (let i = 0; i < arr.rows.length; i++) {
let item = arr.rows[i];
if (item.IsSeal == "0") {
$('#WaitPactList').datagrid('selectRow', i);
};
}
}
}
else {
$("input[name='ckId']").attr("checked", false);
var arr = $('#WaitPactList').datagrid('getData');
for (let i = 0; i < arr.rows.length; i++) {
let item = arr.rows[i];
if (item.IsSeal == "0") {
$('#WaitPactList').datagrid('unselectRow', i);
};
}
}
})
//一个一个选
$("input[name='ckId']").unbind().bind("click", function () {
//总记录数
var totolrows = $("input[name='ckId']").length;
//选中的记录数
var checkrows = $("input[name='ckId']:checked").length;
//全选
if (checkrows == totolrows) {
$("#ck_all")[0].checked=true;
}
else {
$("#ck_all")[0].checked = false;
}
});
},
onClickCell: function (rowIndex, field, value) {
IsCheckFlag = false;
},
onSelect: function (rowIndex, rowData) {
if (!IsCheckFlag) {
IsCheckFlag = true;
$("#GetWaitPactList").datagrid("unselectRow", rowIndex);
}
if (rowData.IsSeal == "1") {
$(this).datagrid('unselectRow', rowIndex);
}
if (rowData.IsSeal == "0") {
//$("input[data-category='" + rowData.Id + "']").checked = true;
$("[data-category*='" + rowData.Id + "']")[0].checked = true;
}
//总记录数
var totolrows = $("input[name='ckId']").length;
//选中的记录数
var checkrows = $("input[name='ckId']:checked").length;
//全选
if (checkrows == totolrows) {
$("#ck_all")[0].checked = true;
}
else {
$("#ck_all")[0].checked = false;
}
},
onUnselect: function (rowIndex, rowData) {
if (!IsCheckFlag) {
IsCheckFlag = true;
$("#GetWaitPactList").datagrid("selectRow", rowIndex);
}
if (rowData.IsSeal == "0") {
$("[data-category*='" + rowData.Id + "']")[0].checked = false;
}
//总记录数
var totolrows = $("input[name='ckId']").length;
//选中的记录数
var checkrows = $("input[name='ckId']:checked").length;
//全选
if (checkrows == totolrows) {
$("#ck_all")[0].checked = true;
}
else {
$("#ck_all")[0].checked = false;
}
}
});
});
小编在上述代码中很多地方为复选框修改状态的地方都是获取的对象+[0].checked=true,这和很多其他博主的帖子存在不同,小编是通过console.log(复选框对象)在页面上查看才知道的,如下图
$("#btnPactSeal").click(function () {
var row = $('#WaitPactList').datagrid('getSelections');
if (row != null && row.length > 0) {
var i = 0;
var Ids = "";
for (i = 0; i < row.length; i++) {
Ids += row[i].Id;
if (i < row.length - 1) {
Ids += ',';
} else {
break;
}
}
console.log(Ids)
@*$.post("@Url.Action("Edit")?Ids=" + Ids + "&type=1", function (data) {
if (data.type == 1)
$("#WaitPactList").datagrid('load');
GetWaitPactCount();
$.messageBox5s('@Resource.Tip', data.message);
}, "json");*@
} else { $.messageBox5s('@Resource.Tip', '@Resource.PlaseChooseToOperatingRecords'); }
});
解决方法很多,bug也很多,总是要经历弯弯绕绕,然后能力才会有所提升
用对方法才有效率,做对事情才有效果
“麻烦”是自己“处理”不当的结果
“困难”是自己“学习”不够的反射
“挫折”是自己“努力”不足的代价