ExtJS行选中问题 this.getRow(row) is undefined
ExtJS3.1.1中,使用多个Menu展示详细信息,每个Menu中都嵌套一个Grid,但是当多个Menu同时打开并选中数据行的时候,前一次打开的Menu中的Grid行无法选中,并且在FireBug中报“this.getRow(row) is undefined”错误,在网上找了一下资料,也有人遇到此类问题,大概说是选择模型有问题,但是暂时没人能说出其个中缘由,可是有一个方法可以解决问题:
之前封装的GridPanel:
MyGridPanel = Ext.extend(Ext.grid.GridPanel, {
border: false,
autoScroll: true,
loadMask: true,
sm: new Ext.grid.RowSelectionModel({
singleSelect: true
}),
initComponent: function(){
……
……
UBWS.Base.GridPanel.superclass.initComponent.call(this);
}
});
border: false,
autoScroll: true,
loadMask: true,
sm: new Ext.grid.RowSelectionModel({
singleSelect: true
}),
initComponent: function(){
……
……
UBWS.Base.GridPanel.superclass.initComponent.call(this);
}
});
修改为:
MyGridPanel = Ext.extend(Ext.grid.GridPanel, {
border: false,
autoScroll: true,
loadMask: true,
initComponent: function(){
……
……
this.sm = new Ext.grid.RowSelectionModel({
singleSelect: true
});
UBWS.Base.GridPanel.superclass.initComponent.call(this);
}
});
border: false,
autoScroll: true,
loadMask: true,
initComponent: function(){
……
……
this.sm = new Ext.grid.RowSelectionModel({
singleSelect: true
});
UBWS.Base.GridPanel.superclass.initComponent.call(this);
}
});
即sm的定义放在initComponent中,并早于superclass的initComponent调用。