剑道网格性能
Kendo Grid performance
我们有一个Kendo Grid控件,它显示从数据库服务器提取的数据。没有分页功能。所有的数据被拉一次,并显示一个滚动条(取决于行数)。
有一些用户操作涉及一个数字文本框(输入类型为number)列和一个日期控件(输入类型为date)列。用户可以更改这些控件中的值,这些控件会触发用javascript编写的onchange事件处理函数。在这些javascript函数中没有服务器访问,它是纯粹的客户端代码。我们面临的问题是,只要在任何一个输入控件中触发更改,就会出现轻微的UI阻塞。当使用console.log语句跟踪javascript代码时,发现在这些操作中花费了大量时间:kendoGrid.dataSource.sort()
, $("#dataGrid").data("kendoGrid").dataSource.data(sortedDataObject)
, $('#dataGrid').data('kendoGrid').refresh()
.
我正在寻找的是一种提高性能的方法,这可能包括部分网格刷新(类似于服务器分页的虚拟滚动),涉及网格显示区域中可见的数据,以及仅涉及某些列的部分网格刷新。虽然花了一些时间研究,但我找不到一种方法来部分刷新网格。
我无法粘贴任何源代码,因为我不确定有多少代码和什么代码可以真正代表这个问题。这就是为什么我试图用语言来表达这个问题,希望我能得到一些解决方案或方法。
正如您所发现的,大多数类型的用户交互都会自动刷新网格。这可能是昂贵的,并不总是理想的,可以通过以下方式停止:
var gridNeedsRefresh = false;
function onGridDataBinding(e) {
if (!gridNeedsRefresh && isGridPopulated()) {
e.preventDefault(); // cancel data binding to prevent refresh
}
}
您需要基于特定的网格细节实现isgridpopulate方法。这里的想法是,如果网格没有数据或仍在加载中,您不想通过调用preventDefault来干扰它。一旦网格被绑定,刷新应该关闭:
function onGridDataBound() {
gridNeedsRefresh = false;
}
下一步是确定网格合法需要刷新的所有情况,并设置刷新标志。例如,如果您的网格支持排序或过滤,则需要刷新才能正常工作,因此您需要处理这些事件并设置标志:
function onGridSort(e) {
gridNeedsRefresh = true;
}
一旦排序完成,将调用onGridDataBound事件,导致标志被重置,网格再次变得高效。
- 函数参数中的数据与指定变量之间的任何性能差异
- 提高JQuery的性能
- 剑道网格jQuery动画()问题
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 我可以更改剑道UI网格吗's的外键值
- jqGrid树网格问题
- 使用正则表达式评估电子邮件地址时出现性能问题
- React:按键的性能提升
- 在Three.js中导出网格会提高性能吗
- 如何在剑道网格初始化后设置pageSizes
- 在threejs中使用纹理网格和线框网格
- 如何在可分组的剑道网格中设置空数据文本
- 如何在Angular UI网格中选择下一行
- 在javascript中搜索项目列表的性能
- ExtJS网格单元格编辑器,防止焦点松动问题
- 多维数据集网格未在指定的分区中绘制
- kendou网格的更换,需要一种具有更好性能的网格
- 剑道网格性能
- Infrastics Ignite UI网格中的性能问题
- 使用Telerik网格提高ASPX页面性能