`
coolboy09
  • 浏览: 7915 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于Ext grid带搜索分页值得注意的一个问题

    博客分类:
  • Ext
 
阅读更多

       Ext grid 分页在项目中是经常的需求,关于如何分页及传递参数相信做过的同学都很清楚,不过,对于带搜索的分页问题,如果不注意,将会产生很奇怪的现象。

       例如,在一个grid里,初始渲染后,总共5页数据,每页10条数据,假设,有一条关于张三的数据在第一页,这时,在搜索栏里输入张三的条件,将很容易查到。另一方面,有些同学喜欢“不走寻常路”,喜欢随意翻页查看,当页数太多,数据很多时,可能没找到,这时他/她在搜索栏输入张三的条件,发现查不到数据了……先上图,大家就明白了:


 这里假设查询lujian,在用户名输入栏输入:'lujian',点击查找按钮,将看到如下所示结果:



 很顺利的查到了想要的结果,不过,如果你不小心,一下翻到其他页,然后再查(这里假设只有这一条记录),假设你翻到了第三页,如图所示:



 
很不幸,你可能得到如下结果:



 debug时,发现传递的参数都对,按理说,不应该查不到,到底什么地方出了问题呢?这个问题我也debug了很久,发现是查询时,传递的分页参数start问题,原来当在第一页查询时,start是0,当翻到其他页时,这时start不再是0,如果要查找的记录在start之前,这时就查不到了。后来看了一下Ext官方的一个例子,Ext3.4版本的链接是:
http://dev.sencha.com/deploy/ext-3.4.0/examples/form/custom-access.html,里面引用了一个文件:SearchField.js,里面有一段代码是这样的:

onTrigger2Click : function(){
        var v = this.getRawValue();
        if(v.length < 1){
            this.onTrigger1Click();
            return;
        }
        var o = {start: 0};
        this.store.baseParams = this.store.baseParams || {};
        this.store.baseParams[this.paramName] = v;
        this.store.reload({params:o});
        this.hasSearch = true;
        this.triggers[0].show();
    }

 请仔细关注上面代码中的start参数,以及 baseParams参数,这里将start重置为0,也就是说,当搜索时,是要从第一页开始的,这就是为什么上面查不到结果的原因。多说一句,这里是使用reload加载,reload 里使用的参数是lastOptions,当然也可以注册beforeload事件,在其中将start参数传递过去。在Ext4中,该段代码已改变:

onTrigger2Click : function(){
        var me = this,
            store = me.store,
            proxy = store.getProxy(),
            value = me.getValue();
        if (value.length > 0) {
            // Param name is ignored here since we use custom encoding in the proxy.
            // id is used by the Store to replace any previous filter
            me.store.filter({
                id: me.paramName,
                property: me.paramName,
                value: value
            });
            me.hasSearch = true;
            me.triggerCell.item(0).setDisplayed(true);
            me.updateLayout();
        }
    }

 可以看到,在这里是配置了一个filter参数过滤,如果不用这种方式,可以配置extraParams参数,该参数和Ext4之前版本的baseParams参数效果相同。

 

  • 大小: 6.4 KB
  • 大小: 12.1 KB
  • 大小: 14 KB
  • 大小: 12.3 KB
分享到:
评论

相关推荐

    Ext grid 分页实例源码

    Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码

    ext grid json分页显示

    在IT领域,尤其是在Web开发中,"ext grid json分页显示"是一个常见的需求,它涉及到前端数据展示和后端数据交互的关键技术。本例中提到的解决方案是利用DWR(Direct Web Remoting)和EXT.js库来实现。下面将详细阐述...

    ext grid带分页(服务器端)

    - `store`:EXT Grid需要一个数据存储对象,配置`paging`为`true`以启用分页。 - `proxy`:设置数据存储的代理,通常使用`Ext.data.HttpProxy`,配置`url`指向服务器端处理分页请求的接口。 - `reader`:设置数据...

    ext2.0 grid 分页实例(php)

    总的来说,Ext JS 2.0 Grid分页实例与PHP的结合,是前后端协同工作的一个典型示例,通过合理的数据分页策略,可以有效地处理大数据集,提供流畅的用户体验。在实际开发中,可以根据项目需求进行调整和优化,例如添加...

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

    在IT行业中,ExtJS是一个广泛使用的JavaScript库,用于构建富客户端的Web应用程序。它提供了丰富的组件库,包括数据...在阅读这篇博客时,可以参照给出的"extgrid"文件,查看具体的代码实现,以便更好地理解和学习。

    Ext Grid +dwr 列表展示展示带分页

    在本文中,我们将深入探讨如何使用Ext Grid与Direct Web Remoting (DWR)技术结合,实现一个具有分页功能的列表展示。首先,让我们逐一了解这些关键组件。 1. **Ext Grid**: Ext Grid是Ext JS库中的核心组件,用于...

    一个很好的EXTGRID实例

    EXTGRID是EXT JS库中的一个核心组件,它在Web应用中用于展示数据并提供交互功能。EXT JS是一个基于JavaScript的富客户端框架,用于构建复杂的、数据驱动的Web应用程序。EXTGRID以其强大的数据网格功能,提供了丰富的...

    Ext Grid 导出Excel

    在IT领域,特别是Web开发中,Ext Grid是一个广泛使用的组件,用于展示和管理大量数据。它提供了丰富的功能,包括排序、筛选、分页等,使得数据的交互和操作变得非常便捷。当我们需要将Ext Grid中的数据导出为Excel...

    ext grid tree 应用

    在EXT JS框架中,"ext grid tree 应用"是一个常见的功能组合,它结合了Grid面板和Tree面板的优势,用于展示复杂的数据结构。Grid通常用于显示二维表格数据,而Tree则用于展示层次化的数据。在这个例子中,开发者通过...

    jq-extgrid v1.2 表格插件

    extgrid 是一款jquery上的gird插件 界面风格采用了类似easyui extjs 界面风格样式 可通过css修改自己想要的样式 extgrid具有列大小 位置改变 排序 分组 分页 工具栏 扩展行 rowNumber 多选列 编辑列 行列锁 ajax...

    解决Ext Grid中文排序问题

    在EXT JS框架中,Ext Grid是一个非常常用的组件,用于展示数据并支持各种操作,如排序、筛选和分页。然而,默认情况下,EXT Grid遵循ASCII码排序规则,这在处理中文字符时可能导致排序不符合预期,因为中文字符的...

    EXT JSON Sqlserver 分页 全部正常运行

    在IT领域,这个标题涉及到的是一个使用EXT JS(一种基于JavaScript的富客户端框架)和JSON(JavaScript Object Notation)数据格式,结合SQL Server数据库实现分页功能的示例。EXT JS允许开发者创建复杂的、交互式的...

    ext grid 显示数据

    1. **创建Grid**: 首先,创建一个Grid需要定义基本配置,如数据源(store)、列模型(columns)以及渲染数据的单元格。通过`Ext.create('Ext.grid.Panel', { ... })`来初始化Grid。 2. **数据源(Store)**: Store...

    ext grid 合计行

    找了半天,结果在extjs的老家找到一个前辈写的代码,可以在grid上面加上合计, &lt;br&gt;但是却只能合计grid里面的数据,但是我们平常一般是只显示20行或者30行,这样的合计就没有什么意义,我们的合计数据是单独从...

    Ext grid与树实例

    在"extdemo"中,这两个组件可能被结合使用,形成一种混合视图,即在一个Grid中显示扁平化的数据,而在一个Tree中显示层级化的数据。这样的组合使得用户既能快速浏览大量的平面数据,也能深入查看和操作数据的层次...

    EXT grid导出EXCEL

    1. **创建Excel文件**:EXT Grid导出Excel通常通过创建一个Excel文件的XML格式(.xls或.xlsx)来实现。这可以通过使用第三方库如SheetJS(js-xlsx)来完成。SheetJS提供了读取、写入和操作Excel文件的强大API。 2. ...

    ext grid数据绑定

    在EXT JS这个强大的JavaScript框架中,EXT Grid是一个非常重要的组件,用于展示大量结构化数据,并提供了丰富的交互功能。本文将深入探讨"EXT Grid数据绑定"这一主题,包括数据查找和如何将查找结果重新填充到Grid中...

    Ext grid 导出Excel

    "Ext grid 导出Excel"是一个常见需求,它涉及到了JavaScript库Ext JS中的数据网格组件(Ext Grid)与Microsoft Excel文件格式的交互。下面我们将深入探讨这个主题。 首先,Ext JS是一个强大的JavaScript UI框架,它...

    Ext grid 简单实例

    Ext Grid是Ext JS库中的一个核心组件,用于展示和操作数据集。在Web应用程序中,它经常被用来作为数据表格,允许用户查看、排序、筛选和编辑数据。在这个"Ext Grid简单实例"中,我们将探讨如何从Web服务提取数据并将...

    简单的小例子Ext+servlet 分页

    1. **Ext JS Grid分页**: - Ext JS Grid允许开发者设置分页栏,通过`pagingToolbar`配置项,可以轻松添加分页工具栏到Grid底部。 - 分页栏通常包含“第一”、“上一页”、“下一页”、“最后”按钮以及页码选择器...

Global site tag (gtag.js) - Google Analytics