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パラメーターは、ページ数、現在のページ、およびリクエストの引数の1つとしてのみ使用されます(サーバーで値を取得できます)。サーバーから 5 行以上を提供すると、すべてが表示されます。

サーバーにページングを実装するか、またはPagingStore(この 2 番目のアプローチのソリューション例を次に示します: http://www.sencha.com/forum/showthread.php?71532-Ext.ux.data.PagingStore-v0. 5 )

于 2012-09-20T06:37:08.533 に答える