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

标签 extjs extjs4 extjs4.2

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

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

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

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

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

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

最佳答案

您应该在'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: ...
});

关于extjs - 以编程方式选择网格行不会触发 ExtJS4 中的 itemclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34646969/

相关文章:

javascript - 在运行时添加 ExtJS 组件 - "refresh view"?

javascript - HTML内容显示有限行

扩展。通过单击不在窗口中关闭弹出窗口

具有远程缓冲存储的 ExtJS 网格无法呈现第一页

javascript - 我怎样才能使 extjs 中的 rowediting 插件在我点击取消时不添加行?

extjs4.2 - 在 ExtJs 4 中更改宽度和高度后,将窗口与页面中心对齐

javascript - JS/ExtJS 3 比较文本的宽度和文本所在元素的宽度

javascript - 存储/列表不重新加载 Sencha 1.1.1

javascript - 在 Extjs 的外部 html 中使用脚本

javascript - 如何使 Extjs 面积、折线图曲线具有半径,因为它们的弯曲太尖锐