我是Ext JS的新手。我正在使用一个网格面板,当我选择/单击任何行时,与网格下面的面板中显示与所选行相关的某些数据。此外,当窗口加载时,默认情况下应选择/突出显示第一个窗口。
目前的电网&面板显示正确。甚至与所选行相关的数据也会显示在面板中,但行不会突出显示。我试过了grid.focusRow(0)
& grid.getRow(0).highlight()
方法,但它们不起作用。以下是我的代码。
//the js file code
initComponent : function() { //within the window instance
var single = false;
var store = new Ext.data.XmlStore({//all necessary fields added}); //store
HttpUtil.syncCall(this.url, "GET", this.loadStore, store,this);
var acctTplMarkup = [//the fields here are displayed on row selection ];
/*The template for displaying the details of the selected row */
this.acctTpl = new Ext.Template(acctTplMarkup);
//check for request type, if type is range of checks create the grid
if (single == false) {
var gridView = new Ext.grid.GridView();
var colModel = new Ext.grid.ColumnModel([ {
header : 'Status',
dataIndex : 'status'
}, {
header : 'Message',
dataIndex : 'message'
} ]);
var selModel = new Ext.grid.RowSelectionModel({
singleSelect : true
});
grid = new Ext.grid.GridPanel({
...
listeners : {
render : function(grid) {
Ext.getCmp('check').store.on('load',function(store, records, options) { //check is the id value for the window instance
grid.getSelectionModel().selectFirstRow();
});
}
}
}); //gridPanel
} //if
/* If request type is range select then display the grid */
...
if (single == false) {
grid.getSelectionModel().on('rowselect', function(sm, rowIdx, r) {
Ext.getCmp('check').acctTpl.overwrite(Ext.getCmp('detailPanel').body, r.data);
}); //rowselect
} //if
Ext.apply(this, {
...
listeners : {
'afterrender' : function(){
Ext.getCmp('check').acctTpl.overwrite(Ext.getCmp('detailPanel').body, this.store.getAt(0).data,true);
}
}
});
Check.superclass.initComponent.apply(this, arguments);
}, //initComponent
来自数据存储区的数据已加载&显示正确,但只是行没有突出显示。谁能告诉我哪里出错了?
答案 0 :(得分:11)
getRow
中没有Ext.grid.GridPanel
方法。但是,Ext.grid.GridView
中有一个。
要突出显示该行,您应执行以下操作:
var row = grid.getView().getRow(0); // Getting HtmlElement here
Ext.get(row).highlight(); // Getting element wrapper and using its "highlight" method
要执行行选择,您使用的是网格的SelectionModel:
grid.getSelectionModel().selectRow(0)
答案 1 :(得分:6)
组件: Ext.grid.Panel
版本: 4.0.0
选择一个项目并删除以前的选择:
grid.getSelectionModel().select(0);
选择一项并保留先前的选择:
grid.getSelectionModel().select(0, true);
答案 2 :(得分:1)
要选择特定索引处的行,请使用选择模型。
Ext.grid.GridPanel.getView().getSelectionModel().select(index);
答案 3 :(得分:0)
在Sencha 7中,您可以通过grid.setSelection(item);来选择特定行;
参考https://docs.sencha.com/extjs/6.2.1/modern/Ext.grid.Grid.html#method-setSelection