Extjs之PagingToolbar

Ext.PagingToolbar,Ext.data.Store,Ext.data.HttpProxy,Ext.data.JsonReader,Ext.grid.GridPanel

在这里讲一下ExtJs下的一套分页步骤以及涉及到的Ext控件.

因为引入了Json作为数据传输格式,所以这里需要通过Http获得我们想要的数据:

 proxy: new Ext.data.HttpProxy
                (
                    {
                        //url:'/Ajax/getEmpList.ashx'  
                        url: '/FX_LOG_QZ_T/getList'
                    }
                ),

Note:创建HttpProxy的同时,用url这个参数指定获取数据的路径.

竟然传输的数据是Json,顺理成章的就应该换成能解析Json的Reader:

                //解析Json
                reader: new Ext.data.JsonReader
                (
                    {
                        totalProperty: 'totalProperty',
                        root: 'data',
                        //主键
                        id: 'JSON_pid',
                        //表格显示字段列
                        fields:
                        [
                            'JSON_pid', 'JSON_no_ick', 'JSON_no_machine'
                        ]
                    }
                ),

那么一个完整的Ext.data.Store如下:

var storeMain = new Ext.data.Store
        (
            {
                //表示从哪里获得数据
                proxy: new Ext.data.HttpProxy
                (
                    {
                        //url:'/Ajax/getEmpList.ashx'  
                        url: '/FX_LOG_QZ_T/getList'
                    }
                ),

                //解析Json
                reader: new Ext.data.JsonReader
                (
                    {
                        totalProperty: 'totalProperty',
                        root: 'data',
                        //主键
                        id: 'JSON_pid',
                        //表格显示字段列
                        fields:
                        [
                            'JSON_pid', 'JSON_no_ick', 'JSON_no_machine'
                        ]
                    }
                ),
                remoteSort: true
            }
        );

Note:remoteSort指示远程排序(后台排序)

准备好数据源之后,接下来写我们的Ext分页工具条:

   var pageSize = 20;
        var pagingToolbar = new Ext.PagingToolbar
        ({
            emptyMsg: "没有数据",
            displayInfo: true,
            displayMsg: "显示从{0}条数据到{1}条数据,共{2}条数据",
            store: storeMain,
            pageSize: pageSize
        });

Note:如果配置了分页工具条,store.load()就必须在构造Grid之后执行,否则分页工具条将不起作用

 

完整的Ext.grid.GridPanel如下:

grid = new Ext.grid.GridPanel
                (
                    {
                        renderTo: 'grid',
                        height: 680,
                        width: 1240,
                        cm: colModel, //行列
                        store: storeMain, //数据源
                        trackMouseOver: true, //鼠标特效
                        loadMask: true,
                        autoShow: true,
                        autoScroll: true,
                        bbar: pagingToolbar,
                    }
                )
                

最后,在初始化时通过传参数去获取希望得到的分页数据:

                //加载数据
                storeMain.load({ params: { start: 0, limit: pageSize } });

查询参数

一般我们查询出一个具有分页功能的表格数据之后,还会需要根据用户的输入根据这个条件进行条件查询,那么用Ext可以这么实现:

首先在Ext.grid.GridPanel加入一个顶部的工具条:

                        //头部
                        tbar:
                        [
                             '姓名',
                             { xtype: 'textfield', width: 120, id: 'username', name: 'username' }
                             { text: '搜索', iconCls: 'search', handler: SerachGrid }, { xtype: 'tbseparator' }
                        ]
SerachGrid函数中重新加载数据,并且将参数加到params中
 function SerachGrid() {
            username = Ext.get('username').dom.value;
            storeMain.reload
            (
                {
                    params: { start: 0, limit: pageSize, username: username }
                }
            )
        }

 

Ext.PagingToolbar翻页时查询参数丢失的处理  

在测试数据足够分两页的情况下,我们会发现,上面的代码中存在一个问题,就是带条件查询的情况下,我们并不能如意得到翻页的数据,因为翻页时会发生查询参数丢失,查询

的数据不再是带条件的数据,为了处理这个问题,我们可以监听beforeload:

在Ext3中使用的方法是:
store.on('beforeload',function(){
    store.baseParams = {type:type_combo.getValue()};
});

在Ext4中,应该改成:
store.on("beforeload",function(){
    Ext.apply(store.proxy.extraParams, {type:type_combo.getValue()});
});

比如子啊Ext3中,代码如下:

  storeMain.on('beforeload', function () {
            storeMain.baseParams = { username: username };
        });

 

 

END

转载于:https://www.cnblogs.com/Francis-YZR/p/4896123.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值