Kendo UI Grid按数据项选择

亚布拉戈

我有一个具有大型数据源和页面调度的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);

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章