1
colModel: [
            { name: 'Id', index: 'Id', hidden: true, search: false },
            { name: 'Name', index: 'Name', hidden: true, search: false },
          ]

正如 setSelection 方法允许根据行号在 jqGrid 中选择一行一样,是否可以类似地根据其中一个单元格值选择一行。

例如,在上面的 colModel 中,是否可以选择具有特定“Id”或“Name”值的行...假设这些值对于每一行都是唯一的。

4

2 回答 2

8

loadComplete:jqGrid 的部分中,您可以遍历每一行并测试您正在寻找的值。如果找到该值,请选择该行。

前任

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方法的信息。

于 2013-02-26T17:37:51.287 回答
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

于 2018-07-06T06:52:53.863 回答