【问题标题】:Programmatically selecting grid row does not fire itemclick event in ExtJS4以编程方式选择网格行不会触发 ExtJS4 中的 itemclick 事件
【发布时间】:2016-04-11 08:39:10
【问题描述】:

我正在构建一个 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 函数选中,根本没有被调用。

【问题讨论】:

  • 这是预期的行为。 itemclick 用于单击该行时。如果你想监听被选中的行,监听选择事件。

标签: extjs extjs4 extjs4.2


【解决方案1】:

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

【讨论】:

  • 感谢这对我有用。如果对任何人有帮助,请通过selected[0] 获取被选中的记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多