Extjs 获取错误,因为getEditor未定义
我正试图用下面的公式得到网格中一个单元格的值。事实上,我只是想在控制台上打印出来Extjs 获取错误,因为getEditor未定义,extjs,combobox,Extjs,Combobox,我正试图用下面的公式得到网格中一个单元格的值。事实上,我只是想在控制台上打印出来 console.log(Ext.ComponentQuery.query('gridcolumn[itemId=gridId]')[0].getEditor().getStore().findRecord('description', 'Description')); 网格代码 Ext.define('Examples.grid.fdGrid', { extend: 'Ext.grid.Panel',
console.log(Ext.ComponentQuery.query('gridcolumn[itemId=gridId]')[0].getEditor().getStore().findRecord('description', 'Description'));
网格代码
Ext.define('Examples.grid.fdGrid', {
extend: 'Ext.grid.Panel',
xtype: foodGrid',
forceNewStore: true,
itemId: 'foodGrid',
height: Ext.getBody().getViewSize().height - 200,
autoload: false,
columns: [
{
text: 'Food Distrib',
xtype: 'gridcolumn',
itemId:'gridId',
dataIndex: 'food_distributor',
flex: 1,
renderer: function(value){
if(Ext.isNumber(value)){
var store = this.getEditor().getStore();
return store.findRecord('foodid',value).get('description');
}
return value;
},
editor: {
xtype: 'combobox',
allowBlank: true,
displayField: "description",
valueField: "foodid",
listeners: {
expand: function () {
var call = this.up('foodgrid[itemId=foodGrid]').getSelectionModel().selection.record.data.networkname.trim();
this.store.clearFilter();
this.store.filter({
property: 'call',
value: call,
exactMatch: true
})
}
},
},
}
});
但是我得到了一个错误,uncaughttypeerror:无法读取未定义的属性“getEditor”
请问是什么错误
添加了网格代码部分和要打印其值的列。编辑器在需要时创建(第一次编辑时)。因此,当第一次调用渲染器时,编辑器还不可用 要从渲染器内部执行的操作是直接访问存储,而不是通过编辑器。然后,您只需要一个预加载的存储就可以正确渲染网格
renderer: function(value){
if(Ext.isNumber(value)){
var store =Ext.getStore("MyStore");
return store.findRecord('foodid',value).get('description');
}
return value;
},
editor: {
xtype:'combobox',
store:'MyStore'
当然,在渲染网格之前,必须确保已加载MyStore
var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
没有插件,编辑器就不能工作!当您试图获取编辑器时,该编辑器将是未定义的人们只能猜测您试图在那里做什么,但是:
本身没有选择模型<代码>网格执行列
需要一个商店Combobox
可以返回getEditor
或String
,前提是设置了编辑器并且列是Object
可编辑的
由网格插件提供。换句话说,仅将列指定为可编辑并指定列编辑器是不够的,还需要为网格提供可编辑插件可编辑
Ext.define('Examples.grid.fdGrid', {
extend: 'Ext.grid.Panel',
xtype: 'feedGrid',
forceNewStore: true,
itemId: 'foodGrid',
height: Ext.getBody().getViewSize().height - 200,
autoload: false,
selModel: 'cellmodel',
plugins: {
ptype: 'cellediting',
clicksToEdit: 1
},
columns: [
{
text: 'Food Distrib',
xtype: 'gridcolumn',
itemId:'gridId',
dataIndex: 'food_distributor',
flex: 1,
editable: true,
renderer: function(value){
if(Ext.isNumber(value)){
var store = this.getEditor().getStore();
return store.findRecord('foodid',value).get('description');
}
return value;
},
editor: {
xtype: 'combobox',
allowBlank: true,
displayField: "description",
valueField: "foodid",
store: {
fields:['food_distributor', 'description'],
data:[
{
'food_distributor':'a',
foodid:1,
description:'aaaaa'
},
{
'food_distributor':'a',
foodid:2,
description:'bbbbbb'
},
{
'food_distributor':'a',
foodid:3,
description:'aaaaa'
}]
},
listeners: {
expand: function () {
debugger;
var desc = this.up('grid').getSelectionModel().getSelection()[0].get('description').trim();
this.store.clearFilter();
this.store.filter({
property: 'description',
value: desc,
exactMatch: true
})
}
},
},
}
]
});
Ext.create('Examples.grid.fdGrid', {
store: {
fields:['food_distributor', 'description'],
data:[
{
'food_distributor':'a',
foodid:1,
description:'aaaaa'
},
{
'food_distributor':'a',
foodid:2,
description:'bbbbbb'
},
{
'food_distributor':'a',
foodid:3,
description:'aaaaa'
}]
},
renderTo:Ext.getBody()
})
你能分享你的网格代码吗
Ext.ComponentQuery.query('gridcolumn[itemId=foodDistrib]')[0]
正在返回未定义。您的查询不正确。我认为如果它不支持getEditor(),请尝试使用此.editor对象您正在使用itemId=foodDistrib
,但我在任何地方都没有看到这样的ID,您应该使用(“#gridId”)
,您的列中有此ID。@pagep错误:“Ext.data.Model#persistenceProperty”已弃用。
新外部错误(http://localhost:3000/scripts/ext-classic/ext all debug.js:2555:21)
位于Function.raise(http://localhost:3000/scripts/ext-classic/ext all debug.js:2614:23)
位于Object.ext.raise(http://localhost:3000/scripts/ext-classic/ext all debug.js:2693:21)
位于constructor.get(http://localhost:3000/scripts/ext-classic/ext all debug.js:11083:29)
位于constructor.remoteFunction(:2:14)
但是我正在远程加载存储,我不必在这里创建它,对吗??