下面的代码会在页面加载时默认选中每一行,并禁用具有flag set = 1
的行。
//disable row which are flagged
rowattr: function (item) {
if (parseInt(item.IS_FLAGGED) == 1) {
return {"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"};
}
},
//prevent selection of disabled rows
beforeSelectRow: function (rowid, e) {
if ($(e.target).closest("tr.jqgrow").hasClass("ui-state-disabled")) {
return false; // not allow select the row
}
return true; // allow select the row
},
loadComplete: function () {
$("#cb_" + this.id).click(); //enable checkbox on top of multiselect column
$('input.cbox').prop('checked',true); //enable other checkboxes
$("tr.jqgrow").addClass('ui-state-highlight'); //highlight row
//remove highlight and input type checked from disabled row
if ($("tr.jqgrow").hasClass("ui-state-disabled")) {
$("tr.jqgrow input.cbox").prop('checked',false);
$("tr.jqgrow").removeClass("ui-state-highlight"); //enable other checkboxes
}
}
但在loadComplete
上,它还会突出显示已停用的行。如何删除课程highlight
并仅为checked=false
即flag_set = 1
disabled
jQgrid version = 4.6
jQuery version = 1.7.2
答案 0 :(得分:0)
我使用旧的jQuery 1.7.2和旧的jqGrid 4.6分析了这个问题。原因是jQuery 1.7.2在之前触发click
复选框将被更改。因此,jqGrid不会将点击视为选中复选框并且没有任何反应。它似乎是jQuery 1.6-1.8中的一个错误,而不是jqGrid中的错误。 jQuery 1.9及更高版本似乎没有这样的问题。
主要问题是事实的后果。好的,你现在知道它是jQuery 1.7.2中的一个错误。你怎么解决这个问题?您可以重写代码的某些部分并在代码中实现变通方法,以便它可以与旧版本的jQuery和jqGrid一起正常工作。这是你的方式吗?
我的建议是更新到jQuery 1.11.3并考虑更新jqGrid以释放jqGrid 4.9(将很快发布)。