我有一个multiselect true
的jqgrid,我想设置一些行。(我知道行ID。)我该怎么做?
我的意思是
$("#myTable").jqGrid('getGridParam', 'selarrrow');
就像:
$("#myTable").jqGrid('setGridParam', 'selarrrow', rowArray);
答案 0 :(得分:9)
您必须遍历rowArray
数组并为setSelection
中的每个rowid调用rowArray
方法:
var i, count, $grid = $("#myTable");
for (i = 0, count = rowArray.length; i < count; i += 1) {
$grid.jqGrid('setSelection', rowArray[i], false);
}
答案 1 :(得分:5)
$.each(rowsToSelect, function(_, rowId) {
$grid.setSelection(rowId, false);
});
没什么区别。看起来更整洁:)
答案 2 :(得分:2)
(令人惊讶的是,即使是现在,在2014年,jqGrid在分页时也不会保留复选框。)
这是我需要使用的代码,使用jqGrid 4.4.5,在移动到新页面后获取要设置的复选框:
var idsOfSelectedRows = []; // list of RowIDs for rows which have been ticked
$("#tblContracts").jqGrid({
...
colModel: [
{ name: 'AddContract', width: 50, align: "center", editable: true, edittype: 'checkbox', editoptions: { value: "True:False" }, formatter: "checkbox", formatoptions: { disabled: false } },
{ name: "ContractName", search: true, width: 80, align: "center" }
],
loadComplete: function () {
for (i = 0; i < idsOfSelectedRows.length; i++) {
$(this).setCell(idsOfSelectedRows[i], 'AddContract', true);
}
},
在开发过程中,我在“for”循环中设置了“alert”。我发现使用“setSelection
”只是简单地遍历我的RowID列表,选择了行(因此它会突出显示),然后转到下一行,选择那一行。
它没有勾选任何复选框。
请注意,我的“setCell”函数包含jqGrid列的 name ,其中有一个复选框。
如果你剪切'''这段代码,请确保更改此行以反映jqGrid复选框列的名称。