如果在kendo grid的第一页上没有该行,如何选择kendo网格行./

时间:2016-01-07 13:06:55

标签: javascript kendo-ui kendo-grid

尝试在dataBound中选择一个kendo网格行(注意:该行不在网格的第一页上),但它没有选择第3页的行。

dataBound: function(e) {
            if (id!== "" && id!== undefined && id!== null) {
                var grid = e.sender;
                grid.select("tr:contains('" + id + "')");
            }
        },

这里的id在页面URL中并获得如下所示的id:并且将在dataBound id var中传递。

id = $location.search().id;

我有什么想法可以选择第3页的行吗?以上逻辑适用于剑道网格第一页上的行

当尝试选择第3页行时,它只停留在第一页,没有选择任何内容,因为该行属于网格的第三页。

1 个答案:

答案 0 :(得分:1)

下面的函数用于查找dataItem和选择任何页面行。

Var初始化会阻止在第一次调用后调用数据绑定。

function findDataItem(ragGrid, dataItem) {
        initial = true;
        var ds = ragGrid.dataSource;
        var view = window.kendo.data.Query.process(ds.data(), {
            filter: ds.filter(),
            sort: ds.sort()
        }).data;
        var index = -1;
        for (var x = 0; x < view.length; x++) {
            if (view[x].Id == dataItem.Id) {
                index = x;
                break;
            }
        }
        if (index === -1) {
            return;
        }
        var page = Math.floor(index / ragGrid.dataSource.pageSize());
        var targetIndex = index - (page * ragGrid.dataSource.pageSize())+ 1;
        ragGrid.dataSource.page(++page);
        var row = $("#ragGrid").find("tr:eq(" + targetIndex + ")");
        ragGrid.select(row);
    }

这是dataBound函数,并在dataBound中首次调用findDataItem。

  dataBound: function (e) {
            if (id !== "" && id !== undefined && id !== null) {
                if (!initial){
                var grid = e.sender;
                var data = grid.dataSource.data();
                var res = $.grep(data, function (d) {
                    return d.Id == id;
                });
                findDataItem(grid, res[0]);
                }
            }
        },