Ext editgrid 修改一行中某列时如何触发另一列的值改变?keyup事件

我有一个grid写值的问题。
就是在编辑某行的时候,编辑这行的某一列的值的时候,想同时修改这行的其他列的值!
我在colModel中用了keyup方法,如下:[code="java"]listeners:{
keyup:function(tf, e){

                        }
                    }[/code]

但是传入参数只能有(this,e),this就是当前的编辑textfield,e就是当前的事件,我怎么才能得到其他列的编辑框呢?并且要设置他的值!
我目的是在输入时给后面的输入框中写入一个汉字的拼音简码,不知道我的描述是否明白,请赐教!

6个回答

试试 alert(e.record)看能不能或得到
如果能或得到 其他列的值就能获得了 然后就能修改了

不然就监听EditorGridPanel的afteredit : ( Object e )
在一个单元格被编辑之后触发。 编辑事件的对象包含以下属性...

grid - 当前的grid
record - 当前编辑的记录
field - 当前编辑的字段名
value - 编辑后的值
originalValue - 字段被编辑之前的原始值。
row - grid的行序号
column - grid的列序号
grid.on('afteredit', afterEdit, this );

function afterEdit(e) {
// execute an XHR to send/commit data to the server, in callback do (if successful):
e.record.commit();
};

监听器将会以如下的参数格式调用:

e : Object
An edit event (see above for description)

看完上面 应该能修改其他列的值了

listeners : {
afteredit : function(e) {
e.record.set('fieldName','aa'); //设置某列值
e.grid.colModel.getCellEditor(2).field;//或者第2列组件。
}
}

这个简单,现在在修改a列,同时想改变同行的b列,只要定义b列的renderer属性就可以了
{
header : 'B',
dataIndex : 'b',
renderer : function(value, meta, record){
var a = record.get('a');//a列的值
return 'xxx' //你想显示的值
}
}

看api中的 Ext.EventObject

你应该要学习下Ext的事件机制。

api里面已经说的很清楚了 你还可以深入其源码
想要别的 自己造吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问