UI 对 kendo 网格变得无响应
UI becoming unresponsive for kendo grid
在以下情况下,我一直面临 kendo 网格的问题。
我有一个包含 18 列的 kendo 网格。用户可以 select 多行。行数大多在10000以上
要获得 selected 行,我使用 grid.select()
。要从行中提取内容,我使用 grid.dataItem(row)
.
以下是代码片段。
var listofselectedrows = grid.select();
listofselectedrows.each(function (index, row) {
var currentDataRow = grid.dataItem(row);
});
每当 selected 行数更多时。 UI 变得没有反应。
我调试了代码。 grid.dataItem(row)
执行时间过长,导致网页无响应。
请帮我解决这个问题。
此致
性能调整
绑定到大型数据集或使用大型页面时,减少内存中的活动 DOM 对象对性能很重要。 Kendo Grid 提供内置的 UI 虚拟化以高度优化绑定到大型数据集。通过简单配置即可启用 UI 虚拟化。
$(document).ready(function(){
$("#grid").kendoGrid({
scrollable: {
virtual: true
}
});
});
使用分页:
$("#grid").kendoGrid({
dataSource: {
type: "odata",
transport: {
read: "http://demos.kendoui.com/service/Northwind.svc/Orders"
},
pageSize: 10,
serverPaging: true
},
height: 250,
pageable: true,
selectable: "row multiple",
columns: [
"OrderID",
"Freight",
"ShipName",
"ShipCity"
],
});
如果我查看他们的来源,dataItem
函数使用正则表达式 /k-grouping-row|k-detail-row|k-group-footer/
循环遍历所有行元素以获取行索引。我相信使用数据源 getByUid
会比使用 dataItem
函数更快。
把你的代码改成这样
$.each(listofselectedrows, function (index, row) {
var uid = $(row).data("uid");
var currentData = grid.dataSource.getByUid(uid);
});
在以下情况下,我一直面临 kendo 网格的问题。
我有一个包含 18 列的 kendo 网格。用户可以 select 多行。行数大多在10000以上
要获得 selected 行,我使用 grid.select()
。要从行中提取内容,我使用 grid.dataItem(row)
.
以下是代码片段。
var listofselectedrows = grid.select();
listofselectedrows.each(function (index, row) {
var currentDataRow = grid.dataItem(row);
});
每当 selected 行数更多时。 UI 变得没有反应。
我调试了代码。 grid.dataItem(row)
执行时间过长,导致网页无响应。
请帮我解决这个问题。
此致
性能调整
绑定到大型数据集或使用大型页面时,减少内存中的活动 DOM 对象对性能很重要。 Kendo Grid 提供内置的 UI 虚拟化以高度优化绑定到大型数据集。通过简单配置即可启用 UI 虚拟化。
$(document).ready(function(){
$("#grid").kendoGrid({
scrollable: {
virtual: true
}
});
});
使用分页:
$("#grid").kendoGrid({
dataSource: {
type: "odata",
transport: {
read: "http://demos.kendoui.com/service/Northwind.svc/Orders"
},
pageSize: 10,
serverPaging: true
},
height: 250,
pageable: true,
selectable: "row multiple",
columns: [
"OrderID",
"Freight",
"ShipName",
"ShipCity"
],
});
如果我查看他们的来源,dataItem
函数使用正则表达式 /k-grouping-row|k-detail-row|k-group-footer/
循环遍历所有行元素以获取行索引。我相信使用数据源 getByUid
会比使用 dataItem
函数更快。
把你的代码改成这样
$.each(listofselectedrows, function (index, row) {
var uid = $(row).data("uid");
var currentData = grid.dataSource.getByUid(uid);
});