当我重新配置其中包含rowexpander插件的网格时,我遇到了一个问题。如果我删除插件它工作正常。我也尝试了以下修复,但没有运气
Ext.override(Ext.grid.plugin.RowExpander, {
beforeReconfigure: function (grid, store, columns, oldStore, oldColumns) {
var expander = this.getHeaderConfig();
expander.locked = true;
if (columns)
columns.unshift(expander);
}
});
这是错误
第9988行的未处理异常,脚本块
中的第13列0x80070057 - Microsoft JScript运行时错误:参数无效。
它是从extjs脚本块的下面位置抛出的
onColumnsChanged: function(headerCt) {
var items = this.view.el.query(this.rowBodyTdSelector),
colspan = headerCt.getVisibleGridColumns().length,
len = items.length,
i;
for (i = 0; i < len; ++i) {
items[i].colSpan = colspan; // **the error thown location is this**
}
},
请帮忙!在此先感谢!!
答案 0 :(得分:3)
grid.suspendEvents();
grid.reconfigure (store);
grid.resumeEvents();
答案 1 :(得分:3)
可能有点太晚了,但无论如何......
你能确认它只发生在IE吗? Mozilla和Chrome似乎没问题。
显然IE不喜欢colspan=0
,并且在某些时候代码会尝试将0分配给项目的colSpan属性并抛出错误。
我已经尝试将其更改为items[i].colSpan = colspan || 1;
并且问题已解决,但当然这不是解决方案。我正试图检查这是一个真正的错误还是只是缺乏知识! :)
编辑:
虽然我找不到任何解决方案,但为了使其工作,我只是使用Ext.override
覆盖了该方法并将其保留。
EDIT2:
根据ojintoad
的建议,您还可以使用.setAttribute('colSpan', 1);
之类的内容将colspan值从0更改为1.
答案 2 :(得分:0)
使用以下覆盖
overrideRowBodyOnColumnChanged: function () {
for (var i = 0 ; i < this.features.length; i++) {
if (this.features[i].ftype == 'rowbody') {
Ext.override(this.features[i], {
onColumnsChanged: function (headerCt) {
var items = this.view.el.query(this.rowBodyTdSelector),
colspan = headerCt.getVisibleGridColumns().length,
len = items.length,
i;
colspan = colspan == 0 ? 1 : colspan;
for (i = 0; i < len; ++i) {
items[i].colSpan = colspan;
}
}
});
break;
}
}
},
并在网格的initComponent函数中调用此覆盖函数
initComponent: function () {
// your code
this.overrideRowBodyOnColumnChanged();
}