使用带有combo的Roweditor的ExtJS工作不正常
我有ExtJS网格。我正在使用带有combobox的Roweditor插件。当我点击网格中的任何一行时,我可以看到带有更新和取消按钮的编辑器 现在我面临的问题是,当我单击行并启用行编辑器时,如果当前显示的值与组合存储匹配,那么它应该显示为选中,但它没有显示。如果我同时使用使用带有combo的Roweditor的ExtJS工作不正常,extjs,extjs4,Extjs,Extjs4,我有ExtJS网格。我正在使用带有combobox的Roweditor插件。当我点击网格中的任何一行时,我可以看到带有更新和取消按钮的编辑器 现在我面临的问题是,当我单击行并启用行编辑器时,如果当前显示的值与组合存储匹配,那么它应该显示为选中,但它没有显示。如果我同时使用valueField和displayField的值,那么我可以看到它被选中 editor: { allowBlank: true, selectOnFocus:true, editable:true,
valueField
和displayField
的值,那么我可以看到它被选中
editor: {
allowBlank: true,
selectOnFocus:true,
editable:true,
xtype:'combobox',
valueField:'id',
displayField:'status',
triggerAction:'all',
queryMode: 'local',
store:[['1','NOT_STARTED'],
['2','IN_PROGRESS'],
['3','COMPLETED']
],
value:0,
lazyRender: true
}
我想我不能发布图片,所以我在这里给你代码:
如果在组合的存储中同时使用valueField
和displayField
的值,则可以看到所选的值
editor: {
allowBlank: true,
selectOnFocus:true,
editable:true,
xtype:'combobox',
valueField:'id',
displayField:'status',
triggerAction:'all',
queryMode: 'local',
store:[['NOT_STARTED','NOT_STARTED'],
['IN_PROGRESS','IN_PROGRESS'],
['COMPLETED','COMPLETED']
],
value:0,
lazyRender: true
}
当我在组合的存储中以不同的方式分配displayField
和valueField
时(这是理想的情况),它不会显示所选字段
editor: {
allowBlank: true,
selectOnFocus:true,
editable:true,
xtype:'combobox',
valueField:'id',
displayField:'status',
triggerAction:'all',
queryMode: 'local',
store:[['1','NOT_STARTED'],
['2','IN_PROGRESS'],
['3','COMPLETED']
],
value:0,
lazyRender: true
}
请告诉我这里出了什么问题
您好,谢谢您的回复,我已经按照您的建议做了更改,但不知怎么的,它对我不起作用。这是代码。我的店是
var data = {
root: [
{
"objectType":"com.yagna.common.domain.Project",
"objectId":"3072",
"expectedEndDate":"",
"startDate":"2011-06-27 13:06:00.0",
"name":"Milestone-11",
"actualEndDate":"",
"id":"4376",
"Status":"NOT_STARTED"
}] };
my Column is
{id: 'Status',width: 20,text: 'Status',dataIndex: 'Status',filter: {type: 'combobox'},sortable: true, groupable: false,
editor:{
allowBlank: true,
xtype:'combobox',
valueField:'field1',
displayField:'field2',
triggerAction:'all',
mode: 'local',
store: [['0','NOT_STARTED'],['1','IN_PROGRESS'],['2','COMPLETED']],
value:0,
lazyRender: true
} },
Please suggest what is missing here
如果当前显示的值与组合存储匹配,则
它应显示为选中状态,但不显示“
组合框与它与valueField
值匹配的displayField
值不匹配
像您这样硬编码的组合框数据存储将自动将第一项(例如“1”)作为valueField
,第二项(例如“NOT_start”)作为displayField
因为没有一个“数字”值('1'、'2'、'3')与此列中的值匹配(“未开始”、“进行中”、“完成”),所以它不会显示任何内容
除非我理解错误,否则听起来网格数据存储本身包含的“状态”列数据(或您称之为该列的任何内容)是字符串而不是数字(即“未启动”、“正在进行”、“已完成”而不是1、2、3)
您可以做两件不同的事情:
最简单:将值字段保留为字符串,而不是数字
更难:如果出于某种(未说明)原因,您确实需要将其作为一个数字:
渲染器
配置,将数字显示为
未编辑行时的适当字符串[number-string]
对象。此外,如果需要,请从您商店的报价中删除该数字
你要那样做渲染器
配置,那么问题可能只是引号中有数字
希望这一切都有意义
编辑:
这是代码
首先,将状态元素放在一个单独的存储中,如下所示:
var statusStore = Ext.create('Ext.data.SimpleStore', {
fields: ['id', 'status'],
data : [
['0', 'NOT_STARTED'],
['1', 'IN_PROGRESS'],
['2', 'COMPLETED']
]
});
其次,将“status”的值更改为所需的数字字符串(“0”)
第三,将渲染器添加到列配置中,并将编辑器中指定的存储更改为我们在上面创建的存储(statusStore)
如果你成功了,别忘了在左边的支票上标出答案
如果当前显示的值与组合存储匹配,则
它应显示为选中状态,但不显示“
组合框与它与valueField
值匹配的displayField
值不匹配
像您这样硬编码的组合框数据存储将自动将第一项(例如“1”)作为valueField
,第二项(例如“NOT_start”)作为displayField
因为没有一个“数字”值('1'、'2'、'3')与此列中的值匹配(“未开始”、“进行中”、“完成”),所以它不会显示任何内容
除非我理解错误,否则听起来网格数据存储本身包含的“状态”列数据(或您称之为该列的任何内容)是字符串而不是数字(即“未启动”、“正在进行”、“已完成”而不是1、2、3)
您可以做两件不同的事情:
最简单:将值字段保留为字符串,而不是数字
更难:如果出于某种(未说明)原因,您确实需要将其作为一个数字:
渲染器
配置,将数字显示为
未编辑行时的适当字符串[number-string]
对象。此外,如果需要,请从您商店的报价中删除该数字
你要那样做渲染器
配置,那么问题可能只是引号中有数字
希望这一切都有意义
编辑:
这是代码
首先,将状态元素放在一个单独的存储中,如下所示:
var statusStore = Ext.create('Ext.data.SimpleStore', {
fields: ['id', 'status'],
data : [
['0', 'NOT_STARTED'],
['1', 'IN_PROGRESS'],
['2', 'COMPLETED']
]
});
其次,将“status”的值更改为所需的数字字符串(“0”)
第三,将渲染器添加到列配置中,并将编辑器中指定的存储更改为我们在上面创建的存储(statusStore)
如果你的答案是正确的,别忘了在左边的复选框上标出答案。您好,谢谢您的回复,我已经按照您的建议做了更改,但不知怎么的,它对我不起作用。下面是代码。根据答案,如果您希望在打开编辑器时组合与值匹配,则必须将“Status”的值更改为数字。在您上面提供的代码中,“未启动”wo