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

发布于 2024-12-09 18:29:52 字数 1194 浏览 1 评论 0原文

我正在尝试制作看起来像这样的东西: http://dev.sencha.com/deploy/ext-3.4.0/examples/grid/edit-grid.html

但我想更改 Light 列:

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

我可以强制组合框将值与表示形式分离,但不能分离实际的列值(事实上,我不知道在哪里存储列的 id-value 映射(不仅仅是编辑器)):

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'
                    })
                },
                ...
             ]

当我在组合框中选择“Magic title”时无论如何,我在我的网格中得到了 MagicId。我明白为什么会发生这种情况,但无法让它按照我需要的方式工作...

我尝试用...替换所有不必要的代码以帮助您阅读。

感谢您的关注。

I'm trying to make something that looks like: http://dev.sencha.com/deploy/ext-3.4.0/examples/grid/edit-grid.html

But I want to change Light column:

I want it to contain ids instead of actual values.

I can force combobox to separate values from presentation but not the actual column value (in fact I don't know where to store id-value mapping for column (not just for the editor)):

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'
                    })
                },
                ...
             ]

When I select "Magic title" in combobox I get MagicId in my grid anyway. I understand why it's happening but can't make it work the way I need it to work...

I tried to replace all unnecessary code with ... to help you reading.

Thank you for your attention.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅暮の光 2024-12-16 18:29:52

将 ID 字段保留在网格/存储中,然后使用“渲染器”属性来显示其他内容。 ID-文本映射可以存储在数组或对象中:

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

编辑:
由于您已经在组合存储中拥有 ID 值映射,因此我将使用该存储来获取值(需要在组合框外部声明)。

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

Keep the ID field in your grid/store, then use the "renderer" property to display something else. ID-text mapping could be stored in an array or an object:

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

EDIT:
Since you already have the ID-value mapping in the combo store, I would use that store to fetch the value (it needs to be declared outside the combobox).

renderer: function(value) {
    var record = comboStore.findRecord('id', value);
    return record.title;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文