我想获取给定Kendo Grid行的全局索引,以便通过虚拟滚动启用在网格上实现多选。
在显示的行中很容易获得索引:
var kendoGrid = $("#myGrid").data("kendoGrid");
var index = kendoGrid.items().index(kendoGrid.select());
此时,逻辑将是使用页码/页面大小来确定所选行的全局索引是什么。
//Pages are base 1
index += (kendoGrid.dataSource.page() - 1) * kendoGrid.dataSource.pageSize();
但是,这不适用于Kendo网格(第一页除外),因为网格显示先前加载的页面中的行。
示例:
您有1到200的记录,页面大小为100.当您向下滚动到记录#100时,将触发dataBound网格事件,您将能够注意到dataSource页面已从1至2。
您还会注意到第1页中的某些行仍然可见,其索引将作为第2页元素计算。
例如,只要网格保留在第1页,记录#96的索引为95.当您切换到第2页时,将显示记录#96(作为第一项)。此时,该行的网格返回的索引将为0.如果应用上面的页码/大小规则,则最终将得到索引100.
是否有任何解决方案不涉及在服务器端计算的行索引?
注意 如果我们有一个PK列,可以使用它来构建索引列表,但我们并不总是有一个PK列,所以这不是一个选项。