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

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

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

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

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

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,截图如下:

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

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

接下来我们为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相同。

截个图,看看效果:

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

大概就是这个样子,我们的grid已经可以进行分页了,并且是异步的哦

欢迎小伙伴们加入我们的“ExtJS 互助团”QQ群:2257136296

这篇文章还发布在了我的个人网站上面,链接地址:http://www.qeefee.com/article/extjs-starter-06-paging

ExtJS入门教程06,grid分页的实现,布布扣,bubuko.com

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

上一篇:ie8兼容:对象不支持“trim”属性或方法


下一篇:PostgreSQL 给数组排序