如何在商店加载后制作fireEvent
itemclick
。
我有这个,但它不起作用:
pcfstore.on('load', function(){
//auto select first row;
Ext.getCmp('pcf_grid').getSelectionModel().select(0); // this works
//fire itemclick event
var grid= Ext.getCmp('pcf_grid');
grid.fireEvent('itemclick', grid, 0); //this doesnt work
});
以下是网格视图中的itemclick
事件:
viewConfig: {
listeners: {
itemclick: function(dv, record, item, index, e) {
alert(record.data.code);
}
}
}
基本上,当网格加载时,它应该触发所选第一行的警报窗口 网格。
答案 0 :(得分:10)
itemclick
是View
的事件,而不是Grid
的事件。尝试使用:
grid.getview().fireEvent('itemclick', grid, 0);
顺便说一句,为什么不改用selectionchange
。
<强>更新强>
如果您同时拥有itemcontextmenu
和selectionchange
处理程序,则可能会有点混乱。在这种情况下,我建议返回原点并使用itemclick
事件。
但您的代码需要进行一些修改:
itemclick
事件分配给网格,而不是视图。itemclick
传递实际记录时,不是索引grid.getSelectionModel().select(0);
grid.fireEvent('itemclick', grid, grid.getSelectionModel().getLastSelected());
这是fiddle来证明我在说什么。
答案 1 :(得分:0)
经过几个小时的搜索,我找到了解决方案。看起来ExtJs4存在一个问题,使得以下功能对我无法起作用:
grid.getSelectionModel().select(0);
或
grid.getView().select(0); // note that this function is deprecated in ExtJS4!!
在我的控制器中,我使用此代码:
store.load({
callback: function (records, operation, success) {
var rowIndex = this.find('id', myRecord); //where 'id': the id field of your model. You can replace 'id' with your unique field.. And 'this' is your store.
grid.getView().select(rowIndex);
}
})
myRecord是要突出显示和选择的记录。 然后它就像一个魅力。我突出显示并选择了第0行。但是,使用此代码选择行时,不会触发itemclick侦听器。