一旦Grid完成渲染,我必须得到Grid列的数据来做出一些决定并填充一些输入框中的一些数据。但是我无法获取Grid Store。
我知道如何获取商店数据
var store = Ext.getCmp('USER_GRID').getStore();
但我很困惑,在哪里放这段代码。
将其放入网格列renderer: function(value, rowIndex, colIndex)
的一种方法。
我也试过
Ext.create( 'Ext.grid.Panel', {
id:'USER_GRID',
store: myStore,
columns : [{...my columns....}]
listeners: {
render:function(){
var store = Ext.getCmp('USER_GRID').getStore();
}
},
但在这里我也将商店视为空白。
我也试过把它放在
中tbar: [{
xtype : 'textfield',
id:'TOTAL_USERS',
fieldLabel : 'Total Users',
listeners: {
afterrender: function(field){
var store = Ext.getCmp('USER_GRID').getStore();
});
}
}
},
这里也是空白。
你能帮忙吗?
修改
谢谢@Sergey,但我不知道为什么我的myStore
方法没有afterrender
。但是我在你的小提琴例子中也是如此。
我用另一种方式来满足我的要求。
dockedItems: [
{
xtype: 'toolbar',
dock: 'top',
items: [{
xtype: 'label',
text: 'Live Users:'
},{
xtype: 'displayfield',
id: 'TOTAL_LIVE_USERS',
value: '0'
}
]
}
],
//这是列代码。每次渲染调用后,我都会将值增加1以进行最终计数。
{text: "Licence Tpye", width: 100, dataIndex: 'licenceType', sortable: true,
renderer: function(value, rowIndex, colIndex){
var val = parseInt(Ext.getCmp("TOTAL_LIVE_USERS").value);
if(value == 'Live'){
Ext.getCmp('TOTAL_LIVE_USERS').setValue(val + 1);
}
return value;
}
}
如果是错误或正确的做法,请建议。有害吗?
答案 0 :(得分:1)
由于输入框中的数据取决于商店数据,您必须监听商店加载事件(我想每次加载商店时都必须更新数据)。
在加载商店之前,您可以将这些输入框设置为已禁用,或者以其他方式显示它尚未就绪。
Simple fiddle说明如何监听商店加载事件和更新网格工具栏字段。