`
yesjavame
  • 浏览: 689567 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

ExtJS 4无限制滚动条的Grid

阅读更多

原文:http://www.sencha.com/blog/infinite-grid-scrolling-in-ext-js-4/

Grid是在Web浏览器上显示大量表格数据的好方式。基本上,ExtJS 4的GridPanel就是一个增强的HTML表格,它可以轻松的获取、排序和过滤数据,而且不限数量。在版本4,我们重构了Grid,以挑战以前的假设和解锁一些激动人心的新特性和功能。今天,我们要看看如何将这些功能结合起来,从而使我们的应用的更强大和更灵活。

新的Grid中最令人兴奋的一点就是它能够处理大量数据而不无须分页处理。在以前的版本中,所有的数据都会立即被渲染,直到行数超出了浏览器的内存限制。还有一种方法是使用分页,一次只显示单个页面的数据,但这通常不是用户的最佳选择。

为了实现显示无限数据,但无须使用分页,在ExtJS 4,我们开发了一套新的虚拟滚动系统。新系统在你滚动的时候,会无缝的切换数据,一次只渲染少量的行。不像其它无限滚动的解决方案,我们可以简单的回收存在的行和替换它们的值,有点类似每一行都正在被重新渲染。这提供了两大好处,一是能够实现可变行高,二是可以随时折叠和展开每一行。

创建无限制的Grid

现在让我们开始创建我们的无限制滚动的Grid。当然,首先要做的就是准备一个数据集,因此,在这个示例中,我们将使用ExtJS论坛帖子作为我们的数据。首先,我们要建立一个模型,它表示一个论坛的主题:

1 Ext . define ( ' Thread ' , {
2 extend : ' Ext . data . Model ' ,
3
4 idProperty : ' threadid ' ,
5 fields : [
6 ' threadid ' , ' title ' , ' forumtitle ' , ' forumid ' , ' author ' , ' lastposter ' , ' excerpt ' , ' replycount ' ,
7 { name : ' lastpost ' , type : ' date ' , dateFormat : ' timestamp ' }
8 ]
9 } ) ;

大多数字段可以简单的只指定名称,系统会自动将其类型设置为自动类型。特殊的地方是lastpost,需要设置dateFormat属性,以让其可以正确处理服务器端返回的日期值。现在,已经有了一个论坛主题模型的定义,可以使用Store让它从论坛返回数据:

1 var store = Ext . create ( ' Ext . data . Store ' , {
2 model : ' Thread ' ,
3 pageSize : 200 ,
4 autoLoad : true ,
5
6 remoteSort : true ,
7 sorters : {
8 property : ' lastpost ' ,
9 direction : ' DESC '
10 } ,
11
12 proxy : {
13 type : ' scripttag ' ,
14 url : ' http : // www.sencha.com/forum/remote_topics/index.php',
15 extraParams : {
16 total : 50000
17 } ,
18 reader : {
19 type : ' json ' ,
20 root : ' topics ' ,
21 totalProperty : ' totalCount '
22 } ,
23 simpleSortMode : true
24 }
25 } ) ;

在这里,使用了几个Store的配置。我们定义了的ScriptTagProxy,它将使用JSON-P加载数据,也就是会使用JSONReader去处理返回的数据,其中的extraParams属性将高速服务器返回50000条数据。我们还定义了pageSize属性让服务器,从而让服务器每次只返回200条数据。

当用户通过滚动条滚动数据时,无限制滚动Grid将使用这些配置以数据块的形式去下载200条数据,这处理将在当用户操作到接近当前数据的边界时发生,例如,当前加载了200条记录,当用户滚动到大约150个记录时,Grid会去加载下一个数据块。

现在,已经创建了模型和Store,最后的工作就是创建Grid了。这和创建其它的Grid没什么不同,唯一的区别就是需要使用paginggridscroller组件:

1 Ext . create ( ' Ext . grid . GridPanel ' , {
2 width : 700 ,
3 height : 500 ,
4 renderTo : Ext . getBody ( ) ,
5 store : store ,
6
7 verticalScroller : {
8 xtype : ' paginggridscroller '
9 } ,
10
11 columns : [
12 {
13 xtype : ' rownumberer ' ,
14 width : 40 ,
15 sortable : false
16 } ,
17 {
18 text : " Topic " ,
19 dataIndex : ' title ' ,
20 flex : 1
21 } ,
22 {
23 text : " Replies " ,
24 dataIndex : ' replycount ' ,
25 align : ' center ' ,
26 width : 70
27 } ,
28 {
29 text : " Last Post " ,
30 dataIndex : ' lastpost ' ,
31 width : 130 ,
32 renderer : Ext . util . Format . dateRenderer ( ' n / j / Y g : i A ' )
33 }
34 ]
35 } ) ;

在浏览器打开页面将看到以下结果:

这看起来和普通的Grid没什么不同,不过,你一旦开始滚动,你会发现他可持续滚动下去但没有分页。无限制Grid在ExtJS 4是一个很棒的新技术。它给用户提供了一个很好的体验,再也不用担心那一页是用户想看到的,同时无限制Grid还为维护企业规模的数据提供了高扩展性的解决方案。

作者:Ed Spencer

Ed Spencer leads the development of Ext JS and supporting projects. An expert with Ext JS and JavaScript in general and with several years experience with traditional server side frameworks, he has broad experience in API design and delivery. His passion is in crafting beautiful code that supports the world-class Sencha product line.

分享到:
评论

相关推荐

    ExtJs2.2的grid滚动条以及点Grid发生偏移问题

    Bug1:出现纵向滚动条后,将横向滚动条拖到最后,然后会发现每选择一条记录整个grid就会往左移,右边空出一部份空白。 Bug2:出现横向滚动条后,向右稍拉滚动条,然后点击任意一行,会发现行内容向左偏移,滚动条...

    Extjs4 grid使用例子

    在给定的"Extjs4 grid使用例子"中,我们可以深入理解如何在MVC架构下有效地利用ExtJS4的Grid组件。Grid组件是ExtJS中的核心部分,它提供了一个灵活的、可定制的数据展示网格,通常用于显示和操作大量数据。 1. **...

    ExtJS笔记---Grid实现后台分页

    - 使用`bufferedRenderer`:此选项允许Grid只渲染可见区域的数据,提高滚动性能。 - 考虑使用`pruneRemoved`:在内存有限的情况下,这可以帮助减少Store中不再显示的数据。 以上是ExtJS Grid实现后台分页的基础...

    Extjs4下拉菜单ComboBox中用Grid显示通用控件

    在EXTJS4中,`ComboBox` 是一个非常常用的组件,它提供了一个下拉选择框的功能。在某些场景下,我们可能需要在下拉菜单中展示更丰富的信息,比如表格数据,这时就可以使用 `GridComboBox`。`GridComboBox` 结合了 `...

    extjs4 ComboBox 点击下拉框 出现grid效果

    在EXTJS4中,ComboBox是一个常用的组件,它用于创建下拉选择框,通常用于输入框的辅助选择。这个组件提供了一种用户友好的方式来从一组预定义的选项中进行选择。然而,根据你的标题和描述,你似乎遇到了一个特别的...

    Extjs4.0 列隐藏和滚动条动态加载

    在ExtJS 4.0版本中,它提供了一系列功能,包括表格面板(Grid Panel)的列管理以及滚动条的动态加载。让我们深入探讨这些核心概念。 1. **列隐藏与显示** 在ExtJS 4.0中,表格面板允许用户动态隐藏或显示列,以...

    Ext grid panel 滚动条位置不变

    ### Ext grid panel 滚动条位置不变 在前端开发领域,特别是在使用Ext JS框架时,保持滚动条位置不变是一个非常实用的功能。特别是在处理实时数据更新的场景下,这一功能可以确保用户在数据刷新后仍然停留在之前...

    ExtJs2.2的grid滚动条以及点击Grid发生偏移问题

    Bug1:出现纵向滚动条后,将横向滚动条拖到最后,然后会发现每选择一条记录整个grid就会往左移,右边空出一部份空白。 Bug2:出现横向滚动条后,向右稍拉滚动条,然后点击任意一行,会发现行内容向左偏移,滚动条...

    实现extjs4 的树、grid、form、query等大部分组件的功能

    EXTJS4的grid和tree都支持内置的查询功能,可以通过配置过滤器实现对数据的快速查找。同时,EXTJS的Store组件也提供了高级查询API,可以编写复杂的查询逻辑。 在实际应用中,EXTJS4的这些组件往往需要配合使用。...

    extjs4打印grid插件

    总的来说,"extjs4打印grid插件"是ExtJS4开发中非常实用的一个工具,它为Grid Panel提供了方便的打印功能,极大地丰富了用户体验,特别是在数据报告和数据分析场景中。通过深入理解和使用这个插件,开发者可以更好地...

    EXTJS4 表格GRID示例

    EXTJS4 GRID 表格 分页 编辑 添加判断 颜色判断 分组 等示例

    Extjs4---grid的修改、删除功能---结合struts2、hibernate

    在本文中,我们将深入探讨如何在ExtJS 4框架中实现Grid组件的修改和删除功能,同时结合Struts2和Hibernate技术,构建一个完整的CRUD(创建、读取、更新、删除)应用。ExtJS 4是一个强大的JavaScript UI库,提供了...

    Extjs4前台前台grid导出excel

    在本篇文章中,我们将深入探讨如何在ExtJS4中实现前台Grid的数据导出到Excel功能。 首先,我们需要了解`Ext.grid.Panel`,这是ExtJS中的核心组件之一,用于创建数据网格。它能够动态加载数据,提供排序、过滤、分页...

    ExtJS grid过滤操作

    在myapp4项目中,你可能会找到相关的代码示例,展示了如何在实际应用中配置和使用ExtJS Grid的过滤功能。通过阅读和理解这些代码,你可以更好地理解和应用上述理论知识。 总结来说,ExtJS Grid的过滤操作提供了...

    extJs3升级extjs4方案

    ExtJS4 已完全重新写 grid 组件,tree 也被更新,所以从版本 3 到 4 大部分的属性改变了。 在 ExtJS4 中,API 也发生了很大的变化,包括 tree、tab panel、grid、window、form、chart、data stores、border layout ...

    Extjs4 grid 导出为Excel

    Extjs4 grid 导出为Excel 下载后放在网站(不放在网站中导出按钮不能会点击无响应,因为这里调用了swf文件)里可直接运行index.html测试 <link href='...

    ExtJs Grid选择行

    在ExtJs框架中,Grid组件是一种非常常用的展示数据表格的方式,它提供了丰富的功能,包括数据的排序、分页、过滤以及行选择等。在实际应用中,经常需要根据用户交互来判断Grid中的行是否被选中,以便进行下一步的...

    Extjs4.2 Grid filter Demo 表格过滤实验

    这是利用sencha cmd 生成的GridFilterDemo工程中的app和build文件夹,其余文件过大并且与主题无关,因此未包含。具体方法,请参看我的博客: 《Extjs4.2 Grid Filter Feature 表格过滤特性》

    ExtJS4+Struts2.1的Grid 增删改查

    本文将深入探讨如何使用这两种技术实现Grid的增删改查功能,帮助新手理解ExtJS4与Struts2.1的交互机制。 首先,我们来看ExtJS4中的Grid组件。Grid是ExtJS中用于展示和管理数据的一种视图,它提供了一种灵活且可定制...

    extjs grid数据导出excel文件

    在EXTJS中,Grid控件是用于展示大量结构化数据的关键组件,具有丰富的功能和高度可定制性。本文将深入讲解EXTJS Grid如何实现数据导出到Excel文件的功能。 首先,我们要明白EXTJS Grid的数据导出到Excel的过程通常...

Global site tag (gtag.js) - Google Analytics