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將會完成后面的工作,參數有誤就慢慢調到合適的格式吧。

 PS.如果遇到分頁問題,比如數據明明有N頁,但每頁都是把全部數據列出來,又比如數據展示不完全這些情況,多半是數據源里,start,limit,total這些參數設置問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM