我有一个带有大型数据源和分页的 Kendo UI 网格。
我有一个事件,在我知道要选择的基础数据项的地方触发,但不确定如何以编程方式在网格中分页/选择此项目。如果该项目不在当前网格页面上,当数据不在当前页面上时,我无法使用 datasource.view() 进行查看。
有谁知道如何通过底层数据源对象选择项目?
我遇到了与@@ 类似的情况:
http://jsfiddle.net/Sbb5Z/1050/
我可以通过以下方式获取数据项:
change: function (e) {
var selectedRows = this.select();
var dataItem = this.dataItem(selectedRows[0]);
}
但后来我不知道如何在另一个网格中选择同一行。
基本上在一个网格的选择事件中,我想在另一个网格中选择相同的项目。它们不是相同的数据源,因为它们具有不同的页面设置,但它们是相同的底层数据数组。
我在目标网格中有数据项——但我不知道如何在目标网格中分页/选择它。
编辑:
到目前为止,我想出的最好的方法是创建一个与原始参数相同的数据源,并以编程方式对其进行分页,直到找到我要查找的内容。当然一定有更好的方法吗?
最佳答案
我从 Telerik 得到了这个,并且更干净了:
http://jsfiddle.net/RZwQ2/
function findDataItem(theGrid, dataItem) {
//get grid datasource
var ds = theGrid.dataSource;
var view = kendo.data.Query.process(ds.data(), {
filter: ds.filter(),
sort: ds.sort()
})
.data;
var index = -1;
// find the index of the matching dataItem
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 / theGrid.dataSource.pageSize());
var targetIndex = index - (page * theGrid.dataSource.pageSize()) + 1;
//page is 1-based index
theGrid.dataSource.page(++page);
//grid wants a html element. tr:eq(x) by itself searches in the first grid!
var row = $("#grid2").find("tr:eq(" + targetIndex + ")");
theGrid.select(row);
console.log('Found it at Page: ' + page + 'index: ' + targetIndex);
}
关于javascript - Kendo UI Grid 按数据项选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19775423/