javascript – Kendo UI Grid按数据项选择
作者:互联网
我有一个带有大数据源和分页的Kendo UI Grid.
我有一个事件触发我知道我想要选择的基础数据项,但我不确定如何以编程方式页面/选择网格中的此项.如果该项目不在当前网格页面上,则当数据不在当前页面上时,我无法使用datasource.view()来查看.
有谁知道我如何通过其底层数据源对象选择项目?
我和@在哪里有类似的情况:
http://jsfiddle.net/Sbb5Z/1050/
我可以使用以下内容获取数据项:
change: function (e) {
var selectedRows = this.select();
var dataItem = this.dataItem(selectedRows[0]);
}
但后来我不知道如何选择其他网格中的同一行.
基本上在一个网格的选择事件中,我想去另一个网格中选择相同的项目.这些数据源不同,因为它们具有不同的页面设置,但它是相同的基础数据数组.
我在目标网格中有数据项 – 但我不知道如何在目标网格中分页/选择它.
编辑:
我想出的最好的方法是创建一个与原始数据源具有相同参数的数据源,并以编程方式对其进行分页,直到找到我要查找的内容.当然必须有更好的方法吗?
解决方法:
我从Telerik那里得到了这个,并且有点清洁:
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,kendo-grid 来源: https://codeday.me/bug/20190713/1446508.html