如何将 extjs 网格限制为仅显示 100 行并提供所有行作为下载?

Posted

技术标签:

【中文标题】如何将 extjs 网格限制为仅显示 100 行并提供所有行作为下载?【英文标题】:How to limit a extjs grid to only show 100 rows and offer all rows as download? 【发布时间】:2011-10-09 05:42:09 【问题描述】:

我有一个可以包含数千条记录的商店。而不是使用 extjs 网格的分页功能,我想将网格限制为仅显示 100 第一个商店记录并提供一个链接或按钮,允许用户下载完整的商店数据为制表符分隔的文本文件。

有没有办法将grid 存储的数据转换为制表符分隔的文本文件并提供给extjs/javascript 下载?

这是我正在使用的商店的代码:

var resultStore = new Ext.data.Store(
    model: 'Result',
    proxy: 
        type: 'ajax',
        url: '../asso_find.pl',
        reader: 
            root: 'data',
            totalProperty: 'totalCount'
        
    
);

【问题讨论】:

你使用什么代理来加载数据? 只是一个想法:为什么不在服务器端限制它? :) @Molecule:我正在使用 ajax 代理。我在我的问题中添加了我商店的代码! @Lionel Chan:如果我已经在服务器端限制了它,就不可能再下载完整的结果集了。 alex,extjs 存储在加载数据时正在发送limit 参数。您可以考虑 limit 参数来更改您的服务器脚本。 【参考方案1】:

您能否向存储添加一个加载侦听器,然后仅使用它加载前 100 条记录。例如:

listeners: 
  load : function (store, records, success, operation, options) 
    store.loadData(records.slice(0, 100))
   

我已在组合盒商店中对此进行了测试,它似乎有效。这可能是您解决方案的一个良好开端,因为这意味着所有记录都在客户端,但只有 100 条记录在网格中。

【讨论】:

你好 Eoin!我测试了你的代码,它有效!这无疑让我更接近解决我的问题!现在唯一缺少的是可以提供我商店的完整数据集作为选项卡分隔格式的下载。 他所做的是从返回的记录中加载前 100 条记录。您可能只想将记录存储在另一个变量中,并在以后将其用于数据生成。 @Lionel 是正确的。如果要使用整个结果集,则需要将其存储在变量中以备后用。但是,我不确定如何在 javascript 中生成可下载的制表符分隔的文本文件。你试过这个扩展吗? sencha.com/forum/….

以上是关于如何将 extjs 网格限制为仅显示 100 行并提供所有行作为下载?的主要内容,如果未能解决你的问题,请参考以下文章

如何将空行添加到网格并填充列,然后在EXTJS中提交

格式化 ExtJS 网格列

ExtJS 4.2网格单元格编辑如何将列值与组合显示值绑定

如何在网格中显示菜单 - ExtJS 5?

extjs3 网格单元最大长度输入验证

extjs3 编辑器网格限制输入键行为