我正在使用enablerowbody:true
,在rowBody中插入div
,使用getRowClass
,并在此div中渲染网格。最初加载精细(网格内网格),
但是当我编辑主行内容时,问题就出现了,之后getRowClass
再次触发,导致重新创建div
,从而丢失渲染的网格..
如何重新渲染内部网格或避免重新创建div ..?
答案 0 :(得分:0)
是的,不幸的是,这是默认行为。您需要侦听网格视图的beforerefresh事件,并将内部网格元素移动到安全的位置,例如在侦听器中附加到文档正文但不可见。
然后,在refresh事件中,您必须将内部网格移回外部网格rowBody。
你不应该只是重建内部网格而不进行适当的破坏以避免内存泄漏。
答案 1 :(得分:0)
正如saki建议的那样,将innerGrid创建为
record.innerGrid=new Ext.grid.GridPanel();
然后在gridView
的rowupdated侦听器上重新渲染innerGrid。
listeners:{
rowupdated:function( view, firstRow, record ){
var tools=record.innerGrid.tools;
record.innerGrid.rendered=false;
record.innerGrid.tools=null;
record.innerGrid.render(Ext.get('rowBodyDivId'));
record.innerGrid.tools=tools;
}
}
注意:仅当内部网格不可编辑时才保持为True ..
仍在尝试使用可编辑的innerGrid(附加/触发事件正在抛出错误)