extjs grid 分页

在使用extjs创建带分页功能的 grid 如下:

1.创建一个模型

        //  创建算定义模型 模型名称 User
        Ext.define(‘User‘, {
            extend: ‘Ext.data.Model‘,
            fields: [‘name‘, ‘email‘, ‘phone‘, ‘birthDate‘] // 加载指定的数据字段
        });

2. 创建store 来存储模型,其中 myPageSize 是默认的页面初始大小,设定为 10

// 创建 store
        var userStore = Ext.create(‘Ext.data.Store‘, {
            model: ‘User‘,  // 使用自定义模型
            //fields: [‘name‘, ‘email‘, ‘phone‘,‘birthDate‘], // 添加此字段时,可删除 model 字段
            autoLoad: false,
            //id:‘UserStoreID‘,
            pageSize: myPageSize,
            proxy: {   // proxy 字段从后台获取数据
                type: ‘ajax‘,
                url: ‘/home/GetData‘,
                reader: {
                    type: ‘json‘,
                    root: ‘data‘,
                    totalProperty: ‘totalCount‘,
                }
            }
        });

3. 创建分页控件方法一:

            /* 在grid 底部添加分页控件,将组件添加到该面板中的组件或一系列组件。所停靠的项目可以停靠在面板的顶部、右边、左边或底部。这通常是用于像工具栏和标签栏: */
            dockedItems: [   
      {
                xtype: ‘pagingtoolbar‘,
                store: userStore,   //和 GridPanel 使用的 store 是相同的
                dock: ‘bottom‘,
                displayInfo: true,
                displayMsg: ‘显示第{0}条数据到{1}条数据,一共有{2}条‘,
                emptyMsg: "没有记录"
            }
           ]

 分页控件方法二:

 

   bbar: new Ext.PagingToolbar({       //定义翻页控件
                pageSize:myPageSize,           // 参数1:每页显示数
                store: userStore,      // 数据源---非常重要
                displayInfo:true,
                displayMsg:‘显示第{0}条数据到{1}条数据,一共有{2}条‘,
                emptyMsg:‘没有记录‘
            }),

在后台接收的方法具体代码如下(以下是 C# mvc 控制器代码)

 public JSONHelper GetData()
        {

            List<Users> myList = new List<Users>();
            JSONHelper json = new JSONHelper();
            json.success = true;
            json.totlalCount = 50;
            int num = 10;  // 模拟生产记录数

            // post 请求
            //var pageSize = Request.Form["start"];
            //var pageIndex = Request.Form["limit"];

            // get 请求获取 前端发送到服务器的 页面号,页面大小
            var pageIndex = Request.Params["start"]; // 当前请求页面号
            var pageSize = Request.Params["limit"]; // 页面大小

            // 读取数据
            var model = userService.GetData(pageIndex, pageSize, null);
            if (model != null)
            {
                foreach(var m in model)
                {
                    json.AddItem("name", m.Name);
                    json.AddItem("phone", m.Phone);
                    json.AddItem("email", m.Email);
                    json.AddItem("birthDate", m.BirthDate);
                    json.ItemOk();
                }
            }
            return json;
        }

注意: 后台返回的格式一定是 json 格式,返回的 json 格式如下:

var userData = {
    "success": true,
    "totalCount": 12,
    "users": [
        { "name": "Lisa", "email": "[email protected]", "phone": "111111111",birthdate:‘1991-02-01‘ },
        { "name": "Bart", "email": "[email protected]", "phone": "222222",birthdate:‘1991-02-02‘ },
    ]
};
时间: 2024-11-15 08:03:21

extjs grid 分页的相关文章

Extjs grid分页多选记忆功能

很多同事在用extjs grid做分页的时候,往往会想用grid的多选功能来实现导出Excel之类的功能(也就是所谓的多选记忆功能),但在选选择下一页的时候 上一页选中的已经清除 这是因为做分页的时候又向服务器请求了分页数据 以下解决方法是在工作中的碰到的.分享给大家共同学习一下. 1.首先定义一个保存选中记录的集合 2.定义选中记录的CheckboxModel 3.定义store(这个请参考) 监听beforeload 及load事件 4.在grid中引用sm

ExtJs中grid分页加载的问题

最近项目中遇到一个grid分页加载的问题,当按照条件查询数据后,数据数据在grid中分页显示,当点击翻页后grid的中显示第二页数据.此时更换查询条件后再次点击查询时,发现grid的下面分页信息栏中页码并不是1,而是上次翻到的页面. 这是因为以前在点击查询时调用的是store.load()方法,然后再load之前将参数添加进去. 如果想让每次查询时页面从1开始就要使用store的loadPage方法.使用该方法指定每次加载的页码是1 例如 record_store.loadPage(1,{ pa

ExtJs4 SpringMvc3 实现Grid 分页

新建一个Maven webapp项目,webxml以及spring配置没什么需要注意的,不再赘述. Maven依赖:(个人习惯,有用没用的都加上...) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P

extjs grid renderer用法

extjs grid renderer用法 摘自:http://www.cnblogs.com/ljian/archive/2011/10/27/2226959.html var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer({ header: "", width: 20, align: 'center' }),{ header: '', align: 'center', dataIndex: 'AccountAndRo

ExtJS4.2 Grid 分页栏 搜索

function SearchCondition(){ this.startTime = ""; this.endTime = ""; this.targetInfo = ""; this.logType = ""; this.manager = ""; this.reset = function(){ this.startTime = ""; this.endTime = "

ExtJS Grid 字段因为json数值前空格加载失败

今天遇到个奇葩问题,因为EXCLE数据没有去掉前空格导入之后EXTJS.Grid无法加载数据. 排错顺序: 首先检查控制台有没有报错. 在oracle中运行sql语句,检查SQL是否正确 导出json数据,并在在线json验证中验证json数据是否正确. 在上线后,当天显示正常,并进行过导出操作.怀疑近期数据出错.添加createdate筛选条件,从当天到前天倒序检查是否报错. 当天数据报错,前天数据无错.检查当天数据. 找到当天数据,检查中发现5列中文长度过长,怀疑这些列中数据有特殊字符,一列

dojo grid 分页

dojo很强大,也很方便,但是缺少文档,只能看源代码,也挺好的,就是费时间... 网上找了一段代码(找不到原出处了,不好意思),也看了dojo自带的demo,放一段可以执行的页面代码这里.把ip换成自己架设的js服务器(esi的CDN貌似有点问题)即可 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; ch

ExtJS Grid Column Number

 {                 xtype: 'numbercolumn',                 text: '亏盈数量',                 width: 130,                 dataIndex: 'LossOrProfitNum',                 editor: {                     xtype: 'numberfield',                     minValue: 0,    

ext:grid分页,列宽度自动填满grid宽度

var cm = new Ext.grid.ColumnModel([{      header : '编号',      dataIndex : 'id'     }, {      header : '名称',      dataIndex : 'name'     }, {      header : '描述',      dataIndex : 'descn'     }]);   var store = new Ext.data.Store({      proxy : new Ext