jqGrid设置选定的行

时间:2011-11-29 12:00:12

标签: jqgrid

我有一个multiselect true的jqgrid,我想设置一些行。(我知道行ID。)我该怎么做?

我的意思是

$("#myTable").jqGrid('getGridParam', 'selarrrow');

就像:

$("#myTable").jqGrid('setGridParam', 'selarrrow', rowArray);

3 个答案:

答案 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复选框列的名称。