以编程方式选择网格行不会触发ExtJS4中的itemclick事件

时间:2016-01-07 03:38:38

标签: extjs extjs4 extjs4.2

我正在构建一个ExtJS4 Web应用程序,我有一个"页面"我有一个网格,其记录来自数据库。加载网格存储后,我想要选择第一个项目。

这是我迄今为止所尝试过的:

store.load({
    callback: function() {
        if(store.count() > 0){
            grid.getSelectionModel().select(0);
          //grid.getView().select(0);
        }
    }
});

商店会在我的网格中显示数据库记录时正确加载它们。第一行也会突出显示,就好像它被单击一样。但是,itemclick事件的监听器/控制器不会触发,而不是手动单击该行时。

我还尝试了grid.getView().select(0);以及grid.getSelectionModel().selectFirstRow();,但显然,这些都不是功能。

我的网格行似乎是由itemclick函数选择的,根本不会被调用。

1 个答案:

答案 0 :(得分:4)

你应该使用' selectionchange' ' Ext.selection.Model' 中的监听器,而不是' itemclick'在网格类中。在网格中单击行并以编程方式选择行时,将在两种情况下触发此侦听器。

代码可能是这样的:

Ext.create('Ext.grid.Panel', {
    selModel: Ext.create('Ext.selection.Model', {
        ...
        listeners: {
           selectionchange: function( this, selected, eOpts ) {
               // Write your listener here or fire another event in view controller
           }
        }
    }
    store: ...
});