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

  這兩個功能常常會一併使用到,通常在生成combo組合框時,設置pageSize大於0,在下拉列表的頁腳位置會自動建立一個分頁工具欄,前提是queryMode:'remote' 讀取遠程數據時。html

  先來創建一個Model:ajax

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和comboxjson

    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(),效果如圖所示:,瀏覽器

輸入查詢參數的獲得結果緩存

查看瀏覽器控制檯能夠看到發送的參數:app

_dc=1406791364718      緩存序列號,自動生成,不用管
limit=10         每頁顯示條數
page=1          當前頁數
sSearch=北京      查詢參數
start=0         本次查詢起始序號ide

還有返回的結果:工具

{"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不同則分頁顯示會錯誤。url

  就是這樣了,總之在使用Extjs時,參數的設置很是重要,只要參數設置正確,Extjs將會完成後面的工做,參數有誤就慢慢調到合適的格式吧。spa

 PS.若是遇到分頁問題,好比數據明明有N頁,但每頁都是把所有數據列出來,又好比數據展現不徹底這些狀況,多半是數據源裏,start,limit,total這些參數設置問題

相關文章
相關標籤/搜索