我正在构建一个 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/