ExtJS入门教程06,grid分页的实现

简介:

前面两篇内容分别介绍了extjs grid的基本用法extjs grid异步加载数据,这篇文章将介绍extjs grid的分页。

数据量大的时候我们必须用到分页,结合上一篇的异步加载数据,今天我们就看看如何异步的加载分页数据。

在extjs grid的请求中,包含几个参数,如图:

image

page:当前页

start:起始行的行号

limit:每页数据行数,默认为25

在请求处理的时候,我们只要获得这些参数,就可以方便的将想要的分页后的数据返回给客户端。

接下来我们新建一个handler,用来处理分页请求,返回数据:

public class gridPaging : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/json";
        Common.HandleResult result = new Common.HandleResult();

        int limit = int.Parse(context.Request["limit"]);
        int page = int.Parse(context.Request["page"]);
        var list = Entity.UserEntity.UserList.Skip(limit * (page - 1)).Take(limit);
        result.Set(true, new { total = Entity.UserEntity.UserList.Count, record = list });
        string jsonString = JsonConvert.SerializeObject(result);
        context.Response.Write(jsonString);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

然后,修改我们的store,将默认的每页数据行数改为2(我们的列表中只有6行数据):

var myStore = Ext.create('Ext.data.Store', {
    model: 'User',
    autoLoad: true,
    pageSize: 2,
    proxy: {
        type: "ajax",
        url: "/handlers/gridPaging.ashx",
        reader: {
            type: 'json',
            root: "data.record",
            totalProperty: "data.total",
            idProperty: 'ID'
        }
    }
});

由于采用了分页,我们返回的json数据的结构也发生了变化,所以reader也进行了相应的改变。

然后刷新看我们的grid,截图如下:

image

确实是有两行数据,但是却少了我们的分页工具栏。

接下来我们为grid添加分页工具栏,通常情况下,我们将工具栏显示在grid底部,代码如下:

var win = Ext.create("Ext.Window", {
    title: "gird demo",
    width: 300,
    height: 200,
    layout: "fit",
    items: {
        xtype: "grid",
        store: myStore,
        columns: [
            { xtype: "rownumberer" },
            { text: "姓名", dataIndex: "Name" },
            { text: "年龄", dataIndex: "Age" }
        ],
        bbar: [
            { xtype: "pagingtoolbar", store: myStore }
        ]
    }
});

pagingtoolbar的store配置一定要和grid的store相同。

截个图,看看效果:

image




本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/p/extjs-starter-06-paging.html,如需转载请自行联系原作者
相关文章
|
关系型数据库 MySQL 数据库连接
关于MySQL-ODBC的zip包安装方法
关于MySQL-ODBC的zip包安装方法
|
存储 人工智能 OLAP
LangChain+通义千问+AnalyticDB向量引擎保姆级教程
本文以构建AIGC落地应用ChatBot和构建AI Agent为例,从代码级别详细分享AI框架LangChain、阿里云通义大模型和AnalyticDB向量引擎的开发经验和最佳实践,给大家快速落地AIGC应用提供参考。
131499 94
|
3月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
机器学习/深度学习 网络协议 vr&ar
proteus仿真软件中芯片的命名规则与封装方法(详细版)
proteus仿真软件中芯片的命名规则与封装方法(详细版)
1389 0
|
3月前
|
人工智能 Serverless API
TaskingA在GitHub上已突破 5.1k stars!这是一个真正被开发者认可的 AI Agent平台,AI开发者必看,如何用它实现生产力逆袭?
TaskingAI 是一个 AI-native 应用开发平台,通过整合模型、检索、助手与工具模块,为开发者提供一站式的 BaaS(后端即服务)体验,简化 AI 应用从开发、测试、到部署的全过程 。
|
10月前
|
机器学习/深度学习 数据采集 传感器
使用Python实现深度学习模型:智能土壤质量监测与管理
使用Python实现深度学习模型:智能土壤质量监测与管理
613 69
|
10月前
|
数据采集 Python
数据爬取技术进阶:从表单提交到页面点击的实现
本文介绍了如何使用 Python 和代理 IP 技术,从表单提交到页面点击,实现动态网页的数据爬取。以百度贴吧为例,详细讲解了登录、发帖和数据采集的实现流程,并提供了完整的代码示例。通过代理 IP 确保数据获取的稳定性和安全性。
339 3
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解、如何添加锁解决缓存击穿问题?分布式情况下如何添加分布式锁
这篇文章介绍了如何在SpringBoot项目中整合Redis,并探讨了缓存穿透、缓存雪崩和缓存击穿的问题以及解决方法。文章还提供了解决缓存击穿问题的加锁示例代码,包括存在问题和问题解决后的版本,并指出了本地锁在分布式情况下的局限性,引出了分布式锁的概念。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解、如何添加锁解决缓存击穿问题?分布式情况下如何添加分布式锁
|
JavaScript
Vue中 引入使用 vue-splitpane 实现窗格的拆分、调节
Vue中 引入使用 vue-splitpane 实现窗格的拆分、调节
2446 0
Vue中 引入使用 vue-splitpane 实现窗格的拆分、调节
|
机器学习/深度学习 算法
现代深度学习框架构建问题之tinyDL中机器学习的通用组件与深度学习如何解决
现代深度学习框架构建问题之tinyDL中机器学习的通用组件与深度学习如何解决
288 2