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

Raz*_*riz 2 extjs extjs4 extjs4.2

我正在构建一个 ExtJS4 Web 应用程序,并且有一个“页面”,其中有一个网格,其记录来自数据库。加载网格存储后,我希望选择第一个项目。

这是我到目前为止所尝试过的:

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

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

我也尝试过grid.getView().select(0);grid.getSelectionModel().selectFirstRow();但显然,这两个都不是函数。

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

Koh*_*ami 5

您应该在“Ext.selection.Model”中使用“selectionchange”侦听器,而不是在网格类中使用“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: ...
});
Run Code Online (Sandbox Code Playgroud)