我正在使用extjs Grid面板,它有2列,如下图所示。
我的要求是在相应“任务描述”单元格值的每次更改时更改“短名称”单元格值。我在“任务描述”栏中使用了编辑器,如下所示。
columns: [
{
text: 'Task Description',
dataIndex: 'TaskDescription',
flex : 1.5,
editor: {
xtype : 'textarea',
allowBlank : false,
listeners : {
change : function(field, e) {
var text = field.value;
if(text.length <= 26 && !text.match(/[.:-]/)) {
if(text.length == 26) {
text = text[25]==' ' ? text : text.substring(0, text.lastIndexOf(' '));
}
//code to set short name cell value.
}
}
}
}
},
{
text: 'Short Name',
dataIndex: 'Name',
width: 130
}
]
但是如何访问“短名称”列以从更改事件功能设置它。
请建议我解决方案。
提前致谢。
答案 0 :(得分:5)
您可以使用编辑事件侦听器并根据需要播放记录。 这是:
listeners: {
edit: function (editor, e, eOpts) {
var text = e.record.data.name;
console.log(text);
if (text.length <= 26 && !text.match(/[.:-]/)) {
if (text.length == 26) {
text = text[25] == ' ' ? text : text.substring(0, text.lastIndexOf(' '));
}
//code to set short name cell value.
var record = e.record;
record.set("email", text); //Here you can set the value
}
}
}
他们有很多方法可以达到预期的任务。这是一种方式!! 作为参考,这里是fiddle
答案 1 :(得分:0)
我解决了这个问题。
listeners : {
change : function(field, newValue,o ,e) {
var text = field.value;
if(text.length <= 26 && !text.match(/[.:-]/)) {
if(text.length == 26) {
text = text[25]==' ' ? text : text.substring(0, text.lastIndexOf(' '));
}
var selectedModel = this.up('grid').getSelectionModel().getSelection()[0];
selectedModel.set('Name', text);
}
}
}