ExtJs Grid 大数据量的显示效率问题
2009年06月03日 星期三 12:00
有个grid,需要定时ajax取数据,大概500行.
现在在ajax的响应函数里面用大概类似下面的方法更新
store.each(function(record){
var newData = jsonData.data[record.id];
record.set(dataIndex,newData.SuccessCount);
record.commit();
});
之后发现效率特别低,瓶颈主要有2个:
--因为ajax取回来的json有600多k..解析起来需要8s, 后来改为iframe里面jsp直接生成js object,监听iframe的onload事件,优化到了1s内
或者改为使用专用插件来实现,例如华表。
2.布局器的渲染效率跟不上.
--因为有500*6个单元格,直接写入store的话,界面会挂死一会
做法1:
grid.suspendEvents(); grid.resumeEvents(); store.fireEvent("datachanged", store);
这种做法会导致gird的滚动条滚动,于是还需要保存滚动位置,大概的方法如下:
(根据需求要适当修改,如我之前是在store的add事件里面设置新的位置,在grid的bodyscroll里面保存位置)
但是这种方法会有一个短暂的滚动,视觉效果不是很好,暂时没找到解决方法.(也许add前grid.suspendEvents()可以)
onLoad: Ext.emptyFn, listeners: { beforerefresh: function(v) { v.scrollTop = v.scroller.dom.scrollTop; v.scrollHeight = v.scroller.dom.scrollHeight; }, refresh: function(v) { v.scroller.dom.scrollTop = v.scrollTop + (v.scrollTop == 0 ? 0 : v.scroller.dom.scrollHeight - v.scrollHeight); } }
做法2: 最后根据需求,还是改成了每次只读取100条记录,在滚动条拉到底部的时候再填入100条.不是很完美,但是时间来不及改了.
经过相当长一段时间的验证,我们不能保证用户的电脑最低配置和我们差不多,那么在大数据量展示方面,彻底放弃grid是我们无奈的选择
替代方法之前已经讲过,再复述一遍也无妨:
1,用iframe嵌套jsp页面表格展示数据,少量的数据可以考虑使用grid,例如不到百行的,或者能实现数据库分页,这个时候grid还是可以用用的。
2,使用专业插件来实现(表格涉及到复杂运算最好使用这个),推荐华表。
3,推荐extjs中可以实现的table列表格式,你在guibuilder中可以看到table的拍板格式,类似于自己在jsp里面画表格,要制作成list有点难度,这个了解就好,实现比较麻烦。
4,使用以下代码来解决:
view: new Ext.ux.grid.BufferView({
// custom row height
rowHeight: 34,
// render rows as they come into viewable area.
scrollDelay: false,
forceFit: true,
deferEmptyText: true,
emptyText: "无相关数据"
})
不过是在Extjs3.0的版本里面才有Ext.ux.grid.BufferView 这个控件,用来专门解决grid大数据量问题,表现如何,有待验证。
还有什么好的方法,以后慢慢研究 呵呵
分享到:
相关推荐
ExtJS Grid是一个强大的数据展示组件,它允许用户以表格的形式查看和操作大量数据。在实际应用中,数据过滤是常见的需求,以便用户能快速定位到感兴趣的信息。本篇将深入探讨ExtJS Grid的过滤操作,以及如何动态地对...
在ExtJS中,Grid Panel是一种数据驱动的组件,它允许开发者以表格的形式展示大量数据,并且支持分页、排序、过滤、编辑等功能。要创建一个Grid,首先需要定义数据模型(Model),它描述了数据的结构,包括字段名和...
在实际应用中,可能还需要考虑性能优化,例如分批导出大数据量,或者在后台服务器处理导出以避免阻塞浏览器。此外,为了提供更好的用户体验,可以添加进度提示、错误处理等功能。 总结来说,EXTJS Grid的数据导出到...
在EXTJS中,Grid组件是一个强大的数据展示工具,它允许用户以表格形式查看和操作大量数据。在EXTJS 3.2.0版本中,Grid提供了一个功能,可以将其中的数据导出到Microsoft Excel文件中,方便进一步的数据分析和处理。 ...
4. **分页**:Grid可以通过`pagingToolbar`组件实现分页,方便浏览大量数据。分页配置包括`pageSize`、`store`和`displayInfo`等。 5. **排序**:EXTJS Grid支持单列或多列排序,只需点击列头即可改变排序顺序。...
EXTJS的Grid组件是一种强大的数据展示工具,可以轻松地处理大量数据,并提供灵活的排序、筛选和分页功能。 首先,我们需要理解PHP在其中的角色。PHP是一种广泛使用的服务器端脚本语言,特别适合于处理动态内容和与...
ExtJS Grid是Sencha ExtJS框架中的一个核心组件,它用于构建数据驱动的表格视图。Grid组件在Web应用中广泛使用,因为它提供了...在实际开发中,根据项目需求,合理利用Grid的特性可以极大地提升用户体验和开发效率。
ExtJS Grid 分页是Web应用中数据展示的重要组成部分,它允许用户高效地浏览大量数据而无需一次性加载所有记录。在本文中,我们将深入探讨ExtJS Grid的分页功能及其实现方式。 首先,ExtJS Grid是一种强大的...
"大数据量高性能前端表格grid 动态加载数据"这一技术主题,旨在优化用户体验,解决因一次性加载大量数据导致的页面卡顿问题。本文将深入探讨如何实现这种高效的数据加载策略。 首先,"高性能grid"是指一种能够快速...
ExtJS Grid是一个强大的数据展示组件,它在Web应用程序中用于显示和操作大量数据。Grid提供了丰富的功能,包括分页、排序、过滤、编辑等,是ExtJS库中的核心组件之一。"Extjs Grid 扩展实例"是一个演示如何增强Grid...
- `GridPanel` 是EXTJS中用于展示表格数据的组件,它可以灵活地处理大量数据,并提供排序、分页、过滤等功能。 - 在 `GridComboBox` 中,`GridPanel` 作为下拉菜单的内容,使用户能以表格形式查看和选择数据。 3....
msg: "正在加载大量数据", // 显示的消息 progress: true, // 是否显示进度条 width: 300 // 对话框宽度 }); ``` 这里的`progress: true`参数指定了对话框应该包含一个进度条。 #### 2. 更新进度条 一旦进度条...
EXTJS Grid是一款强大的数据展示组件,常用于构建复杂的Web...通过以上分析和调试,你应该能找到并解决静态EXTJS Grid中文提示和列显示问题。如果问题仍然存在,建议查看EXTJS的官方文档或社区论坛寻求进一步的帮助。
如果数据量较大,可以添加分页功能。在Store中配置分页参数: ```javascript var store = Ext.create('Ext.data.Store', { ... pageSize: 25, // 每页25条记录 ... proxy: { ... extraParams: { start: 0,...
7. **优化性能**:考虑使用分页(Paging)和延迟加载(Lazy Loading)来优化大数据量的加载,提高用户体验。 通过这个实例,开发者可以掌握ExtJS和Struts2的结合使用,实现动态数据驱动的表格,这对于开发数据密集...
ExtJS GRID是一款强大的JavaScript数据网格组件,用于展示和操作大量结构化数据。在ExtJS 4.0版本中,Grid提供了单元格合并的功能,这在处理复杂数据展示时非常有用,比如汇总信息或者创建表头合并。下面我们将深入...
Grid是一种可配置的表格视图,它可以显示大量的结构化数据,并提供了排序、筛选、分页等功能。在ExtJS 5中,Grid不仅是一个展示数据的容器,还支持通过拖放操作来实现数据的移动和重新排列。 实现Grid与Grid之间的...
EXTJS的动态GRID特性极大地提高了开发效率和用户体验,使得开发者可以构建高度定制化和响应式的数据展示应用。在实际项目中,配合EXTJS的其他组件和功能,如Toolbars、Charts、Windows等,可以构建出功能丰富的Web...
Grid组件是ExtJS中的核心部分,它提供了一个灵活的、可定制的数据展示网格,通常用于显示和操作大量数据。 1. **MVC架构**: Model-View-Controller(MVC)是一种设计模式,常用于大型应用的组织和管理。在ExtJS4...
后台分页是一种常见的数据处理策略,特别是在大数据量的情况下,它将数据分批加载,避免一次性加载所有记录导致的页面响应慢或浏览器内存压力过大的问题。在ExtJS中,Grid组件通过与服务器端交互来实现这一功能。 ...