【问题标题】:Paging in extjs gridextjs 网格中的分页
【发布时间】:2012-10-04 07:14:07
【问题描述】:

我有一个 html 页面,其中包含一个 div id="grid-example"

我提到一个js文件包含如下代码

Ext.onReady(function () {

var myData = [
    ['3m Co', 71.72, 0.02, 0.03, '9/1 12:00am'],
    ['Alcoa Inc', 29.01, 0.42, 1.47, '9/1 12:00am'],
    ['Altria Group Inc', 83.81, 0.28, 0.34, '9/1 12:00am'],
    ['American Express Company', 52.55, 0.01, 0.02, '9/1 12:00am'],
    ['American International Group, Inc.', 64.13, 0.31, 0.49, '9/1 12:00am'],
    ['AT&T Inc.', 31.61, -0.48, -1.54, '9/1 12:00am'],
    ['Boeing Co.', 75.43, 0.53, 0.71, '9/1 12:00am'],
    ['Caterpillar Inc.', 67.27, 0.92, 1.39, '9/1 12:00am'],
    ['Citigroup, Inc.', 49.37, 0.02, 0.04, '9/1 12:00am'],
    ['E.I. du Pont de Nemours and Company', 40.48, 0.51, 1.28, '9/1 12:00am'],
    ['Exxon Mobil Corp', 68.1, -0.43, -0.64, '9/1 12:00am'],
    ['General Electric Company', 34.14, -0.08, -0.23, '9/1 12:00am'],
    ['General Motors Corporation', 30.27, 1.09, 3.74, '9/1 12:00am'],
    ['Hewlett-Packard Co.', 36.53, -0.03, -0.08, '9/1 12:00am'],
    ['Honeywell Intl Inc', 38.77, 0.05, 0.13, '9/1 12:00am'],
    ['Intel Corporation', 19.88, 0.31, 1.58, '9/1 12:00am'],
    ['International Business Machines', 81.41, 0.44, 0.54, '9/1 12:00am'],
    ['Johnson & Johnson', 64.72, 0.06, 0.09, '9/1 12:00am'],
    ['JP Morgan & Chase & Co', 45.73, 0.07, 0.15, '9/1 12:00am'],
    ['McDonald\'s Corporation', 36.76, 0.86, 2.40, '9/1 12:00am'],
    ['Verizon Communications', 35.57, 0.39, 1.11, '9/1 12:00am']

];

// create the data store
var store = Ext.create('Ext.data.ArrayStore', {

    fields: [
       { name: 'company' },
       { name: 'price', type: 'float' },
       { name: 'change', type: 'float' },
       { name: 'pctChange', type: 'float' },
       { name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
    ],
   data: myData

});

// create the Grid
//var pluginExpanded = true;
var grid = Ext.create('Ext.grid.Panel', {
    store: store,
    stateful: true,
    stateId: 'stateGrid',

    columns: [
        {
            text: 'Company',
            flex: 1,
            sortable: true,
            dataIndex: 'company'
        },

        {
            text: 'Price',
            width: 75,
            sortable: true,
            //renderer: 'usMoney',
            dataIndex: 'price',
            menuDisabled: true //it will show/hide menu for sorting.

        },

        {
            text: 'Change',
            width: 75,
            sortable: true,
            dataIndex: 'change',
            menuDisabled: true //it will show/hide menu for sorting.
        },

        {
            text: '% Change',
            width: 75,
            sortable: true,
            dataIndex: 'pctChange'
        },

        {
            text: 'Last Updated',
            width: 185,
            sortable: true,
            renderer: Ext.util.Format.dateRenderer("d/M/yy"),
            dataIndex: 'lastChange'
        },

    ],

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

        }),

    height: 550,
    width: 600,
    title: 'Array Grid',
    renderTo: 'grid-example',
    viewConfig: {
    stripeRows: true

    }
});

});

我正在获取网格,但分页无法正常工作...请帮助我。` 我要不要。每页的行数应为 5。

【问题讨论】:

    标签: extjs grid javascript


    【解决方案1】:

    @阿米特

    我看到您正在使用本地数组来填充网格面板中的数据。 ExtJS 网格面板分页工具栏仅适用于服务器端数据,并使用以下属性从服务器获取数据并计算页面:

    • 开始
    • 限制
    • totalProperty - 在阅读器上
    • 页面大小

    服务器必须处理 start 和 limit 以及 pageSize 以返回请求的数据并将记录总数设置为 a 属性,该属性设置为 totalProperty(例如,'totalRecords')。

    如果您正在寻找内存数据的分页,您可以参考http://www.sencha.com/forum/showthread.php?71532-Ext.ux.data.PagingStore-v0.5 或参考您下载的 extjs 3.x 文件夹中的示例代码 - examples/ux/PagingMemoryProxy.js

    【讨论】:

      【解决方案2】:

      pageSize: 5 配置必须上商店。

      【讨论】:

        【解决方案3】:

        尝试删除limit:10 我在 Ext.PagingToolbar 的配置中没有看到它。

        【讨论】:

        • 我从 Ext.PagingToolbar 的配置中删除了限制:10,但仍然分页不起作用..我的代码现在和上面一样..
        • 添加这个:store.load({params:{start:0, limit:5}});判断是否有效
        • 嗨哈达斯,在哪里使用 store.load({params:{start:0, limit:5}});
        • 可以在store定义后写: var store= ... ; store.load({params:{start:0, limit:5}});
        【解决方案4】:

        对我来说,设置正确的阅读器属性就是这样做的。然后,您只需在服务器上处理查询字符串参数startlimit 即可执行数据选择。 DataSource.Skip(start).Take(limit);

        var myStore = Ext.create('Ext.data.Store', {
            model: 'Book',
            pageSize: 10,
            proxy: {
                type: 'ajax',
                url: '/api/data',
                reader: {
                    // sends url?start={number}&limit={number}
                    type: 'json',
                    totalProperty: "results",
                    root: "rows"
                }
            },
            autoLoad: { params: { start: 0, limit: 10 } }
        });
        

        我将从 Web 服务返回以符合上述设置的响应。

        {
            "success":"true",
            "results":100,
            "rows":[
                {"Title":"Book #61","Author":"Some Guy","Year":2010}
                ....
                ....
            ]
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-04
          相关资源
          最近更新 更多