jQgrid: multiselect true - 在页面加载时默认检查每一行 [英] jQgrid: multiselect true - make each row checked by default on page load
问题描述
jQuery("#grid").jqGrid({
url:call_url,
datatype: "json",
height: 'auto',
rowNum: 20,
rowList: [20,30,40],
colNames:[<?php echo $col;?>],
colModel:[
{name:'USER_ID',index:'USER_ID', align:'center',search:false,hidden:true,key:true},
{name:'PROJECT_NAME',index:'PROJECT_NAME', align:'center',search:false,hidden: true},
{name:'EMP_NAME',index:'EMP_NAME', sortable:true,summaryType:'count',summaryTpl : 'Total ({0}) Resource Hours' },
<?php for($i=1;$i<=count($cal_arr);$i++) {?>
{name:'<?php echo $i;?>',index:'<?php echo $i;?>',search:false,align:"center",sortable:false ,width:80 },
<?php } ?>
],
pager: "#page",
multiselect: true,
shrinkToFit :true,
autowidth: true,
viewrecords: true,
grouping: true,
groupingView : { groupField : ['PROJECT_NAME'],
groupColumnShow : [false],
groupText : ['<b>{0}</b>'],
groupCollapse : false,
groupOrder: ['asc'],
groupSummary : [true],
showSummaryOnHide: true,
groupDataSorted : true },
sortname: 'EMP_NAME',
caption: "Programatically block selection of some grid row',
gridComplete: function () {
var recs = $("#grid").getGridParam("records");
$( ".mycontent" ).remove();
if (recs == 0 || recs == null) {
$('#grid').after("<div class='mycontent' style='color:red;text-align:center'>No Record Found</div>");
$("#btn_submit").hide();
}
},
loadComplete: function () {
$("#cb_grid").click();
},
rowattr: function (item) {
if (parseInt(item.ID) == 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
}
})
上面的代码是这样做的
必填项
将 jqGrid 与 multiselect:true
一起使用如何设置在页面加载时默认检查的每一行?jQgrid 版本 - 4.6
Using jqGrid with multiselect:true
how to set each row checked by default on page load ? jQgrid Version - 4.6
推荐答案
如果你使用带有 datatype: "json"
且没有 loadonce: true
选项的 jqGrid 4.6 那么你没有那么多可能性.您必须枚举网格的所有多选复选框并在那里选择.所以你可以做
If you use jqGrid 4.6 with datatype: "json"
and no loadonce: true
option then you have not so much possibilities. You have to enumerate all multiselect checkboxes of the grid and select there. So you can do
$("#cb_grid").click(); // "grid" is the grid id
在 loadComplete
回调中例如.如果您考虑所有情况,您可能会添加更多附加条件,因为 loadComplete
将在排序、分页等时调用.
inside of loadComplete
callback for example. If you would think about all cases you will probably add more additional criteria, because loadComplete
will be called on sorting, paging and so on.
更新:您的代码在 rowattr
内有 $('.cbox').attr('checked', true);
行.以您不更改行的复选框的方式,该行尚不存在.而不是你在列标题的复选框上设置 checked
属性 wrong value true
而不是 "checked"
.您应该删除该行以便能够使用我建议您的代码:
UPDATED: You code have $('.cbox').attr('checked', true);
line inside of rowattr
. In the way you don't change the checkbox of the row, which is not yet exist. Instead of that you set checked
attribute with wrong value true
instead of "checked"
on the checkbox of the column header. You should remove the line to be able to use the code which I suggested you:
loadComplete: function () {
$("#cb_" + this.id).click();
},
rowattr: function (item, rd, rowid) {
//$('.cbox').attr('checked', true);
if (parseInt(rowid) === 10) {
return {"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"};
}
},
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
}
查看演示:http://jsfiddle.net/OlegKi/aagxejj5/4/
这篇关于jQgrid: multiselect true - 在页面加载时默认检查每一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!