尝试在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页行时,它只停留在第一页,没有选择任何内容,因为该行属于网格的第三页。
答案 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]);
}
}
},