ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – Kendo UI Grid按数据项选择

2019-07-13 05:34:39  阅读:215  来源: 互联网

标签:javascript kendo-ui kendo-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那里得到了这个,并且有点清洁:

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,kendo-grid
来源: https://codeday.me/bug/20190713/1446508.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有