如果剑道网格的第一页上不存在该行,如何选择剑道网格行。/
Posted
技术标签:
【中文标题】如果剑道网格的第一页上不存在该行,如何选择剑道网格行。/【英文标题】:How to select kendo grid row if that row is not present on first page of the kendo grid./ 【发布时间】:2016-04-11 21:24:56 【问题描述】:试图在 dataBound 中选择一个剑道网格行(注意:该行不在网格的第一页上)但它没有选择第三页行。
dataBound: function(e)
if (id!== "" && id!== undefined && id!== null)
var grid = e.sender;
grid.select("tr:contains('" + id + "')");
,
这里的 id 位于页面 URL 中,并获取 ids 值,如下所示:这将在 dataBound id var 中传递。
id = $location.search().id;
任何想法如何选择第三页行?上述逻辑适用于剑道网格第一页上的行
当尝试选择第三页行时,它只停留在第一页,没有任何选择,因为该行属于网格的第三页。
【问题讨论】:
你不能。不是那样的。这些行(tr
s)在页面更改时重新创建,因此如果您不在第 3 页中,则无法从中找到tr
。您必须尝试另一种方法,也许直接处理数据?
换句话说,您从 url 片段中读取了一些唯一的 ID 值,并且您想从 Kendo UI Grid 中突出显示相应的项目?在这种情况下,具有相同 ID 的项目位于第三页。看看这个链接docs.telerik.com/kendo-ui/web/grid/how-to/Selection/…
尝试遍历数据源,但在页面更改时,其调用数据绑定,导致无限循环。因此没有运气。
var grid = e.sender; var data = grid.dataSource.data(); var res = $.grep(data, function (d) return d.Id == id; );var items = grid.items(); var itemsToSelect = []; items.each(function (idx, row) var dataItem = grid.dataItem(row); if (res[0].Id==dataItem.Id) itemsToSelect.push(row); ); e.sender.select(itemsToSelect);
这里 grid.items();结果仅适用于第一页。
【参考方案1】:
以下函数用于查找 dataItem 和选择任何页面行。
Var initial 防止数据绑定在第一次调用后被调用。
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]);
,
【讨论】:
以上是关于如果剑道网格的第一页上不存在该行,如何选择剑道网格行。/的主要内容,如果未能解决你的问题,请参考以下文章