0

我在 extjs 3.1 中创建分页,但由于某种原因它不起作用。请我做错了什么。我使页数= 5。分页计数正确。意味着它显示底部的页数即将到来。

但网格显示所有数据。我的代码如下

Ext.onReady(function() {

    var store = new Ext.data.JsonStore({
        root : 'data',
        totalProperty : 'total',
        idProperty : 'facId',
        fields : [ "address1", "address2", "city", "country", "ehsContact",
                "facilityManager", "facilityProduct", "facilityType", "fax",
                "facId", "name", "phone", "state", "subGroupA", "subGroupB",
                "zipCode", {
                    name : 'businessUnitId',
                    mapping : 'businessVO.businessId'
                }, {
                    name : 'businessUnitName',
                    mapping : 'businessVO.businessName'
                } ],

        proxy : new Ext.data.HttpProxy({
            url : 'facility.do?method=getAllFacility'
        })
    });

    var grid = new Ext.grid.GridPanel({
        width : 700,
        height : 500,
        title : 'ExtJS.com - Browse Forums',
        store : store,
        trackMouseOver : false,
        disableSelection : true,
        loadMask : true,

        columns : [ {
            id : 'facId',
            header : "facId",
            dataIndex : 'facId',
            sortable : true
        }, {
            header : "fax",
            dataIndex : 'fax',
            width : 100,
            sortable : true
        }, {
            header : "state",
            dataIndex : 'state',
            sortable : true
        }, {
            id : 'address1',
            header : "address1",
            dataIndex : 'address1',
            sortable : true
        } ],

        viewConfig : {
            forceFit : true,
        },

        bbar : new Ext.PagingToolbar({
            pageSize : 5,
            store : store,
            displayInfo : true,
            displayMsg : 'Displaying topics {0} - {1} of {2}',
            emptyMsg : "No topics to display"
        })
    });

    store.load({
        params : {
            start : 0,
            limit : 5
        }
    });

    centerPanel = Ext.getCmp('centerlPanel');
    centerPanel.add({
        layout : 'border',
        region : 'center',
        layout : 'fit',
        items : grid
    });
    centerPanel.doLayout();
});
4

2 回答 2

2

我一直发现使用分页(使用 JSON/PHP/MySQL)我必须返回总数,然后强制我的数据库查询对其进行限制。这就是 start 和 limit 的参数。

store.load({
    params : {
        start : 0,
        limit : 5
    }
});

然后对数据库的查询将是

     $start = (integer) (isset($_POST['start']) ? $_POST['start'] : $_GET['start']);
       $end = (integer) (isset($_POST['limit']) ? $_POST['limit'] : $_GET['limit']);
$limitquery = $query." LIMIT ".$start.",".$end;

(这是针对 PHP/MySQL 的)然后页面发送适当的开始/结束来浏览您的数据。然后服务器/数据库将对您的回报进行排序。如果您想像客户端内存数据库一样使用,您仍然需要找到一种方法来执行此方法。如果您担心这会给您的服务器带来的工作量,我发现使用该LIMIT方法对我们的 MySQL 数据库来说这是一个非常小的工作量。

于 2012-10-01T15:20:31.393 回答
1

ExtJS3 原生只支持远程分页(所以你必须在服务器端处理它)。AFAIKpageSize参数仅用于计算页数、当前页数以及作为请求的参数之一(因此您可以在服务器上获取它的值)。如果您从服务器提供超过 5 行 - 所有都将可见。

您可以通过在服务器上实现分页或使用来修复它PagingStore(这是第二种方法的示例解决方案:http://www.sencha.com/forum/showthread.php?71532-Ext.ux.data.PagingStore-v0。 5 )

于 2012-09-20T06:37:08.533 回答