【发布时间】:2014-01-03 11:00:07
【问题描述】:
我无法访问从我的商店返回的商店元素。当我 console.log(me.proxy.read(operation)) 并在控制台中展开/导航时,我看到了我的所有元素。有 1000 行。我对网格使用相同的存储并将 pageSize 设置为 50。即使我在执行 console.log(me.proxy.read(operation.resultSet.records[51])) 时可以看到 1000 行,但我得到了未定义的消息。因此,由于某种原因,我可以访问的元素数量似乎只有 50 个,因为这是我的 pageSize 设置的值。
长话短说,我在两个场景中使用同一个商店。我想在我的网格中进行分页,每页显示 50 行。但是,我想遍历整个商店并加载所有 1000 行的数组。我想要一个所有 1000 个数组的原因是因为我将使用行中的日期字段从数组中填充我的日期选择器。我将禁用网格中的日期,并让日期选择器仅显示网格中的日期。
我试图包含一个屏幕截图,但我不被允许,因为我在信誉系统上只有 3 级。
var operation = new Ext.data.Operation({action: 'read', start: 0, limit: 1000});
var proxy = new Ext.data.proxy.Ajax({ url: 'http://192.168.0.103/testit/dao_2.cfc?method=getContent'});
me.proxy.read(operation);
console.log(me.proxy.read(operation));
这里是更新的代码:
I have this in my controller:
ondatesStoreLoad: function(me,records,success)
{
var s = this.getStore('dates');
for (i = 0; i < s.getCount(); i++) {
MESSAGE_ID = s.getAt(i).get('message_id');
RECIP_EMAIL = s.getAt(i).get('recip_email');
UNIX_TIME_STAMP = s.getAt(i).get('unix_time_stamp')
console.log(i,MESSAGE_ID, RECIP_EMAIL, UNIX_TIME_STAMP);
};}
这会将我的所有 1,000 条记录输出到控制台,但我不确定如何将它们放入可以在我的 datepicker 组件中使用的数组中。每当我尝试在日期选择器中获取商店时,它总是未定义。我想这是因为商店还没有加载所以那里什么都没有。不知道如何解决这个问题。也许是回调处理程序?
这里是另一个更新:
我在 store.load 中添加了一个回调:
var store = Ext.getStore('dates');
store.load({callback: function(){
console.log(store.data.items[999].data.recip_email);
console.log(store.data.items[999].data.unix_time_stamp);}
})
这需要很长时间才能弄清楚,但现在我可以访问我的所有记录并且有一个较小的问题需要解决。目前我只有一个硬编码的元素来进行快速测试。
我需要将代码放在哪里才能将其放入我的日期选择器 disableDates 配置中?我需要将日期放入一个数组中,但为了快速测试,我使用了 minDate: 只是为了看看我是否可以看到一些工作,但它显示为未定义。现在我有一个beforrender监听器中的代码,但似乎需要在其他地方或者我的日期选择器的某个处理程序......?日期选择器是否有 onload 或我应该为此使用的东西??
【问题讨论】:
-
据我所知,当使用分页网格时,只加载当前显示的记录集。所以在你的情况下,一次只有 50 个。您可以执行一个不使用您的商店的单独服务器调用来检索 1000 条记录以更新日期选择器。
-
另外,为什么要手动创建操作?如果您创建一个带有代理的商店,您只需在商店上调用
.load()来加载数据。无需进行明确的.proxy.read()调用。 -
** 免责声明:我正在为这个框架工作而苦苦挣扎。虽然我有一个网格设置可以从我的服务器和其他一些基本的东西中提取,但它一直很痛苦。长话短说,我不知道自己在做什么。有了这个,我刚刚找到了一些代码片段来尝试访问商店,并且在能够看到所有 1,000 条记录方面取得了一些成功,所以我一直尝试使用它来让某些东西正常工作。我的意图是在再次访问服务器之前尝试从商店获取我能得到的所有东西。我不应该这么担心吗?
-
如果您还没有,我建议充分利用 ExtJS 文档。 docs.sencha.com/extjs/4.2.2/#!/api/Ext.data.Store 有
Store的链接。此外,他们在这里有大量的工作示例:docs.sencha.com/extjs/4.2.2/#!/example 这些示例附带您可以查看的代码,因此您可以看到他们做了什么。 -
感谢您愿意提供帮助,但就像我在此论坛上看到的其他所有人一样,我对文档的看法似乎与其他所有人共享。没有一个示例可以应用于他们作为示例给出的 MVC 模式。我无法进行跳跃。很穷。