Extjs 4.2使用心得 --- combobox组合框和paging 分页工具使用技巧

  这两个功能经常会一并使用到,一般在生成combo组合框时,设置pageSize大于0,在下拉列表的页脚位置会自动创建一个分页工具栏,前提是queryMode:‘remote‘ 读取远程数据时。

  先来建立一个Model:

Ext.define(‘Post‘, {
        extend: "Ext.data.Model",
        proxy: {
            type: ‘ajax‘,
            url: ‘/admin/organizations/ExtCombox/‘,
            reader: {
                type: ‘json‘,
                root: ‘orgs‘,
                totalProperty: ‘total‘
            }
        },
        fields: [
            {name: ‘id‘, mapping: ‘id‘},
            {name: ‘name‘, mapping: ‘name‘}
        ]
    });

  然后是store和combox

    var ds = Ext.create(‘Ext.data.Store‘, {
        pageSize: 10,  //limit参数,每页显示条数,默认为25
        autoLoad:false,
        model: ‘Post‘
    });

    var combox = Ext.create(‘Ext.panel.Panel‘, {
        width: 320,
        bodyPadding: 1,
        layout: ‘anchor‘,
        items: [
            {
                xtype: ‘combo‘,
                store: ds,
                displayField: ‘name‘,
                minChars: 4,  //最小字符数
                typeAhead: false,
                hideLabel: true,
                hideTrigger: true,
                anchor: ‘100%‘,
                multiSelect: false,
                queryDelay: 1000,
                queryMode: ‘remote‘,  //读取远程数据 读本地数据为 local
                queryParam: ‘sSearch‘,  //查询参数,默认为 query
                listConfig: {
                    loadingText: ‘查找中.‘,
                    emptyText: ‘没有符合的数据‘
                    // minHeight,maxHeight,minWidth,maxWidth:100 下拉框最小,最大高度和宽度设置
                },
                pageSize: 10  //下拉列表框的分页大小,大于0则自动创建分页栏
            },
            {
                xtype: ‘component‘,
                style: ‘margin-top:10px‘,
                html: ‘最少输入4位字符‘
            }
        ]
    });

然后有容器就在容器里引用,没容器就renderTo: Ext.getBody(),效果如图所示:,

输入查询参数的得到结果

查看浏览器控制台可以看到发送的参数:

_dc=1406791364718      缓存序列号,自动生成,不用管
limit=10         每页显示条数
page=1          当前页数
sSearch=北京      查询参数
start=0         本次查询起始序号

还有返回的结果:

{"orgs": [{"id": 9110, "name": "\u5317\u4eac\u5510\u62c9\u96c5\u79c0\u9152\u5e97\u66a8\u5317\u4eac\u71d5\u4eac\u996d\u5e97\u6709\u9650\u8d23\u4efb\u516c\u53f8"}, {"id": 669, "name": "\u5317\u4eac\u79d1\u822a\u6295\u8d44\u6709\u9650\u516c\u53f8"}, {"id": 11464, "name": "\u6d77\u822a\u4e91\u7aef\u4f20\u5a92\uff08\u5317\u4eac\uff09\u6709\u9650\u516c\u53f8"}, {"id": 15, "name": "\u5317\u4eac\u884c\u653f\u4e2d\u5fc3"}, {"id": 567, "name": "\u5317\u4eac\u822a\u7ad9\u63a7\u5236\u4e2d\u5fc3"}, {"id": 405, "name": "\u5317\u4eac\u5b89\u5168\u529e\u516c\u5ba4"}, {"id": 358, "name": "\u5317\u4eac\u8425\u4e1a\u90e8"}, {"id": 6509, "name": "\u5317\u4eac\u65b0\u534e\u7a7a\u6e2f\u822a\u7a7a\u98df\u54c1\u6709\u9650\u516c\u53f8"}, {"id": 587, "name": "\u5317\u4eac\u8425\u8fd0\u57fa\u5730"}, {"id": 8912, "name": "\u5317\u4eac\u9996\u90fd\u822a\u7a7a\u6709\u9650\u516c\u53f8"}], "total": 141}

  返回的中文被转码了,╮(╯▽╰)╭,反正只需要看文件结构就行了,有根节点‘orgs‘和数据总数‘total‘,这里的两个参数名称需要和Model.proxy.reader里设置的‘root‘和‘totalProperty‘一样,若root不一样则解读不了数据,若totalProperty不一样则分页显示会错误。

  就是这样了,总之在使用Extjs时,参数的设置非常重要,只要参数设置正确,Extjs将会完成后面的工作,参数有误就慢慢调到合适的格式吧。

 

Extjs 4.2使用心得 --- combobox组合框和paging 分页工具使用技巧,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。