extjs - 在列中,EXTJS 3.4可以编辑网格:如何分离displayField和 ValueField

  显示原文与译文双语对照的内容
0 0

我在尝试制作一些类似的东西: http://dev.sencha.com/deploy/ext-3.4.0/examples/grid/edit-grid.html

但我想要更改灯柱:

我希望它包含 ids,而不是实际值。

可以强制组合框将值与演示文稿分开,但不使用实际的列值( 事实上,我不知道如何存储列的id值映射( 不只用于编辑器) ):


new Ext.grid.EditorGridPanel({
. . .
 store: new Ext.data.Store ({
. . .
 fields: [
 'MagicId',
. . .
 ]
 })
 columns: [
 {
 header: 'Magic',
 dataIndex: 'MagicId',
 editor: new Ext.form.ComboBox({
 store: new Ext.data.Store({
. . .
 fields: ['id', 'title']}),
 valueField: 'id',
 displayField: 'title',
 editable: 'false'
 })
 },
. . .
 ]

当我在组合框中选择"魔术标题"时,我的网格中仍有 MagicId 。 我理解为什么它发生了,但是不能使它工作的方式,我需要它的工作。

我试图替换所有不必要的代码。with 。 帮助你阅读。

谢谢你们的倾听.

时间: 原作者:

0 0

在网格/存储中保留 ID field,然后使用"渲染器"属性显示其他内容。 可以将文本映射存储在 array 或者对象中:


{
 header: 'Magic',
 dataIndex: 'MagicId',
 renderer: function(value) {
 return magicIdValueArray[value];
 }
. . .
}

编辑:既然已经在组合存储中有了标识值映射,那么我将使用该存储来获取值( 需要在组合框外部声明它) 。


renderer: function(value) {
 var record = comboStore.findRecord('id', value);
 return record.title;
}

...