关于ext grid表格单元格弹出窗口并将新窗口的表格数据带回问题

如题,想要的是在主GridPanel面板的一个单元格的一个trigger field,当onTriggerClick时,弹出一个窗口,新窗口主要是一个子表格,这些都没问题,现在就是返回赋值问题(实际就是查找带回的),这里需要在新窗口中选择几个数据值一起返回并将其值填充到主表格的store中,因为是通用的主表格,而且ID无法得到,现在想从这个trigger field中得到这个主表格的store,我试过用了:field.ownerCt,field.findParentByType都无法得到这个主表格,请问大家有什么好办法没有?

不建议你这样扩展EditorGrid
EditorGrid已经将你可能用到的数据传给editor了,至于editor内部的实现,比如定义一个field,与Ext无关了。
你应该在editor内部将数据传递给field,而不是由EditorGrid来干这件事。

我一直用的是RowEditor,没想到Ext封装了Editor这个类
EditorGrid与RowEditor,它们对editor的接口定义是不一样的,RowEditor可以直接使用Ext.form.Field,EditorGrid就需要Ext.Editor了

所以,建议你把逻辑放在Ext.Editor的startEdit中来干

GridPanel中不能直接放其它组件吧?都是renderer生成的html代码
你说的是不是EditorGridPanel或带RowEditor的GridPanel?

EditorGridPanel在编辑状态,Editor可以通过 this.record 访问关联的记录,如果只改这一条,就直接调用它的set接口设置;如果还要改其它数据,也可以通过record.store来获取Store引用。

如果用的是RowEditor,需要对它改写一下:
在startEditing方法中
[code="js"]
var cm = g.getColumnModel(), fields = this.items.items, f, val;
for(var i = 0, len = cm.getColumnCount(); i < len; i++){
val = this.preEditValue(record, cm.getDataIndex(i));
f = fields[i];
// -----增加这一段------
Ext.apply(f,{
row : rowIndex,
col : i,
record : record
});
// ------结束---------
f.setValue(val);
this.values[f.id] = Ext.isEmpty(val) ? '' : val;
}
[/code]

this是指editor

你用的是什么版本?
Ext3.x中,EditorGridPanel在调用列模型的editor时,会将关联的数据信息绑定上去:
[code="js"]
// EditorGridPanel#startEditing方法片断
Ext.apply(ed, {
row : row,
col : col,
record : r
});
[/code]
所以,如果editor处于激活状态,是可以从this.record访问的。

前面有说过:
[quote]如果还要改其它数据,也可以通过record.store来获取Store引用。 [/quote]

我指的this是以editor为主体,所以如果你在其它地方执行是取不到的
假设你的代码写在另外一个弹出窗口内,弹出窗口保持了TriggerField的引用:field,这里你应该这样来获取: this.field.record

或者使用firebug调试一下,看看this指向的是谁
如果的确指向的是列模型中定义的editor,那应该是不会有问题的,3.2.1中代码有这段逻辑。