web-dev-qa-db-ja.com

jqGridは選択した行を設定します

multiselect trueのjqgridがあり、いくつかの行を設定したい(行IDを知っている)。どうすればよいですか?

私は反対を意味します

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

など:

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

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);
}
9
Oleg
$.each(rowsToSelect, function(_, rowId) {
    $grid.setSelection(rowId, false);
});

大きな違いはありません。きちんと見えた:)

5
Robin Maben

(今でも、2014年に、ページング時にjqGridがチェックボックスを保持しないことは非常に驚くべきことです。)

新しいページに移動した後、チェックボックスを設定するためにjqGrid4.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」ループに「アラート」を入れました。 「setSelection」を使用すると、RowIDのリストをステップスルーし、行を選択して(強調表示されるように)、次の行に移動して、代わりにその行を選択することがわかりました。

tickチェックボックスはありませんでした。

「setCell」関数には、チェックボックスがあるjqGrid列のnameが含まれていることに注意してください。

このコードを「n」で切り取って貼り付ける場合は、jqGridチェックボックス列の名前を反映するようにこの行を変更してください。

2
Mike Gledhill