关注 kendo 网格中第二页的一个单元格

Focus on a cell in second page in kendo grid

我需要使用“下一个错误”按钮将焦点放在 kendo-Grid 上的错误单元格上。

但是我在将焦点放在单元格上时遇到了问题。如果错误单元格位于 kendo 网格的第二页。

我的代码:

function nextErr(){

var grid = angular.element('#myGrid').data('kendoGrid');
var dataItems = grid.dataSource.data();
var index;
var uid;
for(var i=0; i < dataItems.length; i++){
    if(!isNullOrUndefined(dataItems[i].errors)
        && !angular.element.isEmptyObject(dataItems[i].errors)){
        index = i;
        uid = dataItems[i].uid;
        break;
    }
}
var errorCell = angular.element("tr[data-uid='"+ uid +"'] td[data-err-msg != 'undefined']")[0];
grid.editCell(errorCell);

}

如果有人实现了类似的东西请告诉我

对于类似的问题,我使用了 Kendo UI Grid select by data item 的想法。这是我自己稍微修改过的函数,用于在网格中查找数据项。

function findDataItem(dataSource, dataItem) {
    if (!dataItem) {
        return null;
    }

    var view = kendo.data.Query.process(dataSource.data(), {
        filter: dataSource.filter(),
        sort: dataSource.sort()
    }).data;

    var index = -1;
    // find the index of the matching dataItem
    var ID = 'YOUR_ID_FIELD_NAME';
    for (var x = 0; x < view.length; x++) {
        if (view[x][ID] == dataItem[ID]) {
            index = x;
            break;
        }
    }

    if (index === -1) {
        return null;
    }
    var page = Math.floor(index / dataSource.pageSize());
    var targetIndex = index - (page * dataSource.pageSize());

    return {
        page: ++page,
        index: targetIndex,
    }
}

然后您可以使用返回的 page 在网格中显示相应的页面 dataSource.page(page)

希望对您有所帮助。