【问题标题】:ExtJS4 - Grid Store pageSizeExtJS4 - 网格存储页面大小
【发布时间】:2011-11-20 23:09:51
【问题描述】:

我正在尝试将商店的 pageSize 限制为 1。我在网格中有 10 个项目,虽然分页机制正确显示 1 个中的 1 个、10 个中的 2 个等,但网格仍然显示所有 10 个项目。我也尝试在 json 中将“total”属性返回为 1,但这仍然不起作用。有什么想法吗?

文档中的示例也不是很有帮助,因为它显示了源代码,但实时预览是空的。

        var photos = new Ext.data.Store({
            model: 'Photos',
            autoLoad: true,
            pageSize: 1
        });

        var photosGrid = Ext.create('Ext.grid.Panel', {
            id: 'PhotoGrid',
            store: photos,
            columns: [
                       { text: "Filename", width: 200, dataIndex: 'filename' }
                    ],
            dockedItems: [{
                xtype: 'pagingtoolbar',
                store: photos,
                dock: 'bottom',
                displayInfo: true
            }],
            region: 'center',
            border: 0,
            overCls: 'row-pointer'
        });

【问题讨论】:

    标签: extjs4


    【解决方案1】:

    嘿,你的问题是你可能在你的 json 中返回所有 10 个项目,支持的分页你必须自己实现,所有分页所做的就是使用特定参数(例如页面的限制)调用商店的负载和页面起始索引。您必须在后端使用这些参数一次发送一个项目。亲爱的朋友。

    编辑

    //this is the model we will be using in the store
    Ext.define('Page', {
        extend: 'Ext.data.Model',
        fields: [
            {name: 'id',    type: 'int'},
        ]
    });
    
    var data = null;
    var store = null;
    Ext.Ajax.request({
        url: 'someurl',
        success: function(result){
            data = Ext.decode(result.responseText);
            store = Ext.create('Ext.data.Store', {
                autoLoad: true,
                model: 'Page',
                pageSize: 1,
                data : data,
                proxy: {
                    type: 'memory',
                    reader: {
                      type: 'json',
                      root: 'pages'//this has to be as the root from your json
                    }
                }
            }); 
        }
    });
    

    【讨论】:

    • 那不酷。我想要的是能够抓取一个文档并将该文档拆分为页面并将它们保存为图像,然后使用网格一次导航这些图像。关于如何在商店中使用它的任何想法?这就像商店需要在内存中,并且您一次从该存储库中提取一个图像。
    • 听起来你需要使用内存代理,我个人没用过,但它似乎并不复杂..你只需将数据保存在变量中,商店使用从那里获取数据的代理。 docs.sencha.com/ext-js/4-0/#!/api/Ext.data.proxy.Memory
    • 我认为即使使用内存存储,pageSize 也会有同样的问题。我还不确定如何将 json 存储在内存中并且一次只能获取一个。内存存储将包含所有项目,但如果您对存储设置限制或页面大小,您一次只能在 json 中存储 1 个项目,因此无法达到目的。将不得不考虑一种不同的方法,因为我看不到这行得通。干杯。
    • 你误会我了,通过一个ajax请求将所有页面加载到一个数据数组中,然后另一个使用内存代理的pageSize 1的存储将从本地数组中一个一个地加载数据,我会用我的想法编辑我的答案..
    【解决方案2】:

    这是您的脚本格式化 json 的查询问题。 当您将 extjs 与 pageSize 一起使用时,它会发送带有参数的查询(pagelimit,我记得)。 在您的服务器端脚本中,您必须检查它们是否存在,如果存在,请更改您的查询以添加 limit 子句(或其他数据库中的等效子句)。

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 2012-01-20
      • 2012-01-06
      • 2013-09-05
      • 2012-05-16
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      相关资源
      最近更新 更多