2016-08-25 4 views
2

私はextjsアプリケーションを持っています。現時点では、バックエンドからすべてのレコードを取得しています.1つのサービス要求でフルレコードが設定されています。 UIレベルでページ分割とソートを実装する必要があります。並べ替えは簡単なようです。 UIレベルのページネーションを実装するにはどうすればよいですか?これの例は何ですか?私はUIレベルでページネーションを実装すればよいので、10〜20kレコードが得られますか? extjs6で負荷を処理できますか?エクステンションのUIレイヤーのページ番号付けとソート

答えて

0

ページングサーバー側を処理することをお勧めします。今すぐあなたはだけ10~20kのレコードを持っているかもしれませんが、それが100kになるとどうなりますか?または100万?

Senchaからこのガイドをご覧ください:Grids - Pagingそれはたくさん説明します。

幸運を祈る!

+0

私はあなたに同意するものとします。しかし、UIレベルのページネーションが実装されていることを確認する必要があります。私たちは、サーバーから10kレコード以上が得られないことを確認しました。 UIレベルのページ区切りがajaxで実装されている例はありません。もしあれば、いくつかの例を共有できますか? – Hacker

+0

ここをクリックしてください:[Ext.toolbar.Paging - ローカルデータによるページング](http://docs.sencha.com/extjs/6.2.0-classic/Ext.toolbar.Paging.html#ext-toolbar-paging_paging -with-local-data);ここでは[Ext.ux.data.PagingMemoryProxy](http://docs.sencha.com/extjs/6.2.0-classic/Ext.ux.data.PagingMemoryProxy.html)を参照してください。 –

+0

ええ、私はそれらを見ました。しかし、実装例はどこにもないので、私はそれが難しいと思っています。 – Hacker

0

並べ替えはそのままで実行されます。これは、デフォルトのExtJs 6.2.0アプリケーションに基づく単純なページネーションの例です。

YourAppName.view.main.List

... 
    // bottom paging-bar definition. Use "tbar" for top bar, or define both. 
    bbar: { 
     xtype: 'pagingtoolbar', 
     displayInfo: true, 
     emptyMsg: 'No data to display', 
     items: ['->'], 
     prependButtons: true 
    } 
... 
    items: [{ 
     title: 'Home', 
     iconCls: 'fa-home', 
     layout: 'fit',  // needed for scrolling 
     scrollable: true, // for scrollable items 
     items: [{ 
      xtype: 'mainlist' 
     }] 
    }, { 
... 

YourAppName.store.Personnel

Ext.define('YourAppName.store.Personnel', { 
    extend: 'Ext.data.Store', 

    alias: 'store.banners', 

    autoLoad: true, // run ajax-query right after grid rendering 
    loadMask: true, // show preload image 
    pageSize: 100, 

    model: 'YourAppName.model.Person', 

    proxy: { 
     type: 'ajax', 
     url: '/personnel', 
     reader: { 
      type: 'json', 
      rootProperty: 'items', 
      totalProperty: 'total' 
     } 
    } 
}); 

app/modelフォルダファイルPerson.jsに作成します。

YourAppName.model .Person

Ext.define('YourAppName.model.Person', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'name', type: 'string', defaultValue: '' }, 
     { name: 'email', type: 'string', defaultValue: '' }, 
     { name: 'phone', type: 'string', defaultValue: '' } 
    ] 
}); 

ストア定義の通りあなたのWebサーバは、このようなJSONでURI /personnelHTTPGET-requestに応答することができなければなりません:

{ 
    "success": true, 
    "total": 20000, 
    "items": [ 
     { "name": "Jean Luc", "email": "[email protected]", "phone": "555-111-1111" }, 
     { "name": "Worf",  "email": "[email protected]", "phone": "555-222-2222" }, 
     { "name": "Deanna", "email": "[email protected]", "phone": "555-333-3333" }, 
     { "name": 'Data',  "email": "[email protected]",  "phone": "555-444-4444" } 
     ... 
    ] 
} 
+0

CUD操作はどうですか? – Hacker

+0

@HackerはExtJs CRUDに関する新しい質問をします。 –

関連する問題