colModel: [
{ name: 'Id', index: 'Id', hidden: true, search: false },
{ name: 'Name', index: 'Name', hidden: true, search: false },
]
正如setSelection方法允许基于行号选择jqGrid中的行一样,是否可以基于其中一个单元格值类似地选择行。
例如在上面的colModel中,是否可以选择具有某个“Id”或“Name”值的行...假设这些值对于每一行都是唯一的。
答案 0 :(得分:8)
在jqGrid的loadComplete:
部分中,您可以迭代每一行并测试您要查找的值。如果找到该值,请选择该行。
实施例
loadComplete: function () {
var rowIds = $(this).jqGrid('getDataIDs');
for (i = 1; i <= rowIds.length; i++) {
rowData = $(this).jqGrid('getRowData', i);
if (rowData['Id'] == idSearchValue ) {
$(this).jqGrid('setSelection',i);
} //if
} //for
...
还会有rowattr:
,但我似乎找不到可以获取当前行的rowID的位置。 Oleg可能会看到这个并做出回应,因为这是他对jqGrid的补充,但是我对我的测试没有任何好运,或者读过你将当前rowId传递给setSelection
方法的地方。
答案 1 :(得分:0)
如果具有包含单元格值的对象数组,则将需要另一种方法。
例如。使用您的colModel
,您想要检索具有以下值的行:
let toSearch = [
{ Name: 'Arthur', Id: 150},
{ Name: 'Julien', Id: 90},
]
然后您可以做的是从jqGrid表中检索整个数据并动态地寻找值:
let data = $grid.jqGrid('getGridParam', 'data');
let toSelect = data.filter((row,i) => {
return toSearch.some(toSelectRow => {
for(let prop in prevRow) {
if(prevRow[prop] != row[prop])
return false;
}
return true;
})
});
toSelect.forEach((row) => $grid.jqGrid('setSelection',row.id, false)); // Prevent firing onSelectRow event
在这里,我们通过false
来防止触发onSelectRow
事件,如果需要,只需删除false