2016-09-26 380 views
1

當我將multiselect: true添加到我的jqgrid時,我看到jqgrid爲每行添加了一個複選框。顯示的每個複選框均未選中。有沒有一種方法可以根據我用來填充網格的數據預設這些複選框?例如,如果我的網格有一個名爲的列被選中,並且我正在顯示的一行有一個選定的值,我想顯示該行的複選框被選中。當一行的選擇字段是,我想保持該複選框未選中狀態。這可能嗎?jqgrid:多選複選框值

回答

1

您問題的答案取決於您使用的jqGrid的分支。我開發免費的jqGrid fork並實現了multiPageSelection: true選項。一個需要填寫selarrrow數組(您可以根據從服務器返回的數據在beforeProcessing內執行此操作)。看看爲the answer創建的the demo。它顯示selarrrow數組包含更多的id在當前頁面上。在分頁或初始填寫時,jqGrid 根據selarrrow陣列設置了chechboxes的狀態。它的工作方式像自定義格式化程序一樣有效,如rowattrcellattr

如果你不能升級到免費的jqGrid,那麼你可以撥打setSelectionloadComplete(見the old answer)。它的運行速度會比使用multiPageSelection: true時慢,但它會起作用。

0

您將需要遍歷數據並應用檢查。

+0

我很好奇我會怎麼做,因爲jqgrid在飛行中添加的「cb」列不是我定義的列模型的一部分。 –

+0

是的,您需要在列生成後執行此操作。基於爲所有複選框生成的索引ID – Yogesh

+0

如何知道何時生成列? –

1

loadComplete,有這樣的事情

var i; 
var rowids = $('#myTable').jqGrid('getDataIDs'); 
for (i = 0;i < count = rowids.length;i+=1) { 
    // condition to mark it check 
    $('#myTable').jqGrid('setSelection', rowids[i], false); 
} 

乾杯!