Ext Js Paging 无法导航到下一页,刷新,最后一页不起作用

Posted

技术标签:

【中文标题】Ext Js Paging 无法导航到下一页,刷新,最后一页不起作用【英文标题】:Ext Js Paging not able to navigate to next Page, refresh, Last page not working 【发布时间】:2014-04-29 18:04:29 【问题描述】:

对不起,我认为这可能是重复的。但我没有从任何地方得到正确的答案。请帮我找出问题。

我正在创建一个带有商店的 Ext Js 网格。也在这个博客的帮助下 http://blog.jardalu.com/2013/6/21/grid-paging-extjs-sencha

我正在创建为第一个页面加载数据页面的网格。但是当我按下下一个,最后,刷新没有任何事件在起作用。同样从控制台我从 ext js 文件中得到这样的错误

Uncaught TypeError: Cannot read property 'name' of undefined 

请帮我找出问题所在。

代码:-

/*global Ext:false */
Ext.require([
    'Ext.data.*',
    'Ext.grid.*'
]);


Ext.onReady(function () 
    var itemsPerPage = 2; // set the number of items you want per page
    var store = Ext.create('Ext.data.Store', 
        id: 'simpsonsStore',
        autoLoad: false,
        fields: ['name', 'email', 'phone'],
        pageSize: itemsPerPage,
        data: 
            'items': [
                'name': 'Lisa',
                "email": "lisa@simpsons.com",
                "phone": "555-111-1224"
            , 
                'name': 'Bart',
                "email": "bart@simpsons.com",
                "phone": "555-222-1234"
            , 
                'name': 'Homer',
                "email": "home@simpsons.com",
                "phone": "555-222-1244"
            , 
                'name': 'Marge',
                "email": "marge@simpsons.com",
                "phone": "555-222-1254"
            ]
        ,

        proxy: 
            type: 'memory',
            reader: 
                type: 'json',
                root: 'items',
                totalProperty: 'total'
            
        ,
      listeners : 
            beforeload : function(store, operation, eOpts)
                var page = operation.page;
                var limit = operation.limit;
                var dataResult = [];
             var startPage = (page -1) * 2;
              var totalCount = startPage + limit;
              console.log(store.proxy.data);
              for (var i = startPage; i < totalCount ; i++) 
               dataResult.push(store.proxy.data.items[i]); 
              

                store.proxy.data.items = dataResult;
                store.proxy.data.total = 4;
            
        
    );

  var TOTAL = 94; //random

    // specify segment of data you want to load using params
  store.loadPage(1);
    Ext.create('Ext.grid.Panel', 
        title: 'Simpsons',
        store: store,
        columns: [
            header: 'Name',
            dataIndex: 'name'
        , 
            header: 'Email',
            dataIndex: 'email',
            flex: 1
        , 
            header: 'Phone',
            dataIndex: 'phone'
        ],
        width: 400,
        height: 125,
        dockedItems: [
            xtype: 'pagingtoolbar',
            store: store, // same store GridPanel is using
            dock: 'bottom',
            displayInfo: true
        ],
        renderTo: Ext.getBody()
    );
);

请在此处查看演示:- http://jsfiddle.net/B6qBN/

【问题讨论】:

【参考方案1】:

我不知道你的问题(实际上我试图解决问题但不想花太多时间)。这是工作示例。在我看来,存在数据模型问题。

煎茶小提琴:Paging Toolbar

// Json File for demostration

    "total": 5,
    "userList":[
        "uid": "1", "firstName":"Tommy","lastName":"Maintz",
        "uid": "2", "firstName":"Ed","lastName":"Spencer",
        "uid": "3", "firstName":"Oğuz","lastName":"Çelikdemir",
        "uid": "4", "firstName":"Jamie","lastName":"Avins",
        "uid": "5", "firstName":"Dave","lastName":"Kaneda"
    ]
    


// the following is code section
var itemsPerPage = 2;   // set the number of items you want per page

Ext.onReady(function()

    Ext.define('senchatest.model.Contact', 
       extend: 'Ext.data.Model',
       fields: [
          name: 'firstName', type: 'string',
          name: 'lastName', type: 'string'
       ]
    );

    var UserList = new Ext.data.JsonStore (
        model: 'senchatest.model.Contact',
        pageSize: itemsPerPage,
        proxy: 
            type: 'ajax',
            url : 'contacts.json',
            reader: 
                type: 'json',
                root: 'userList',
                totalProperty: 'total'
            
        
    );
    UserList.load();

    var users = Ext.create('Ext.form.Panel', 
        bodyPadding: 10,
        width: 300,
        height: 400,
        title: 'User List',
        items: [
            
                xtype: 'gridpanel',
                store: UserList,
                columns: [
                    text: 'Name', dataIndex: 'firstName',
                    text: 'Surname', dataIndex: 'lastName'
                ],
                dockedItems: [
                    xtype: 'pagingtoolbar',
                    store: UserList,   // same store GridPanel is using
                    dock: 'bottom',
                    displayInfo: true
    ]
            
        ],
        renderTo: Ext.getBody()
    )
);

【讨论】:

感谢您的回复。一旦我从服务器完全获取数据集。让 javascript 完成所有操作。我已经按照我的要求附加了演示。但是在第一页本身的那个样本中,所有数据都是可用的。但是分页工具栏会自动更新。 jsfiddle.net/WUK4V

以上是关于Ext Js Paging 无法导航到下一页,刷新,最后一页不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在Objective C中导航到下一页[重复]

单击按钮时转到下一页并刷新上一个 Jquery Mobile

延迟导航到下一页

wordpress 如何在子页面中导航上一页和下一页

我们如何导航到一个网页,抓取数据,移动到下一页,然后再做一次?

导航到下一页时,Chrome (iOS) 中的奇怪自动滚动/跳转行为