ExtJS 4.2访问从商店返回的数组元素

时间:2014-01-03 11:00:08

标签: arrays store extjs4.2

我无法访问从商店返回的商店元素。当我在console.log(me.proxy.read(操作))并在控制台中展开/导航时,我看到了所有元素。有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组件中使用的数组中。当我试图在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监听器的代码,但似乎需要在其他地方或可能是我的日期选择器的一些处理程序....?有没有为datepicker或我shoudl使用的东西onload?

1 个答案:

答案 0 :(得分:0)

为什么不直接从ondatesStoreLoad函数更改datepicker?在循环之前,禁用datepicker中的所有日期。然后在循环期间,而不是console.log调用,启用在该记录中找到的日期。

从理论上讲,这应该有效。但是,查看Ext的文档,我没有看到禁用所有日期或启用日期的方法。您只能设置禁用的日期。但是,在ondatesStoreLoad调用中更新datepicker的一般想法仍然是你应该做的。

您可能需要扩展datepicker类,并向其添加一些自定义方法,以便能够启用特定日期。