【问题标题】:Extjs 4. combobox in grid. using index to get dataExtjs 4. 网格中的组合框。使用索引获取数据
【发布时间】:2014-09-03 00:33:27
【问题描述】:

我需要我的控制器来加载带有组合框的网格。

“设备数据”中的状态字段(数字)应从“设备状态”中加载可能状态的状态字段,并将其显示在组合框中。

选择新选项时,id 应保存在“设备数据”的状态字段中。作为一个数字。

// for store 'equipment'
<?php
header("Content-type: application/json");
?>
{
    "success": true,
    "data": [
        {
            "equipment_id": 1,
            "name": "screwdriver",
            "status": 1
        }
    ]
}


// store 'equipmentStatus'
<?php
header("Content-type: application/json");
?>
{
    "success": true,
    "data": [
        {
            "id": 1,
            "status": "available"
        },
        {
            "id": 2,
            "status": "out of stock"
        },
        {
            "id": 3,
            "status": "not available"
        }
    ]
}

// -----------------------------

Ext.define('Equipment.view.EquipmentGrid', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.EquipmentGrid',

    title: 'Equipment manager',

    requires: [
        'Ext.form.field.ComboBox',
        'Ext.grid.column.CheckColumn',
        'Ext.grid.plugin.CellEditing'
    ],

    initComponent: function () {

        // enable quicktips
        Ext.tip.QuickTipManager.init();

        this.cellEditing = new Ext.grid.plugin.CellEditing({
            clicksToEdit: 1
        });

        Ext.apply(this, {

                plugins: [this.cellEditing],

                // connect store to grid
                store: 'Equipments',

                    columns: [
                    {
                        header: 'Status',
                        dataIndex: 'status',
                        editor: new Ext.form.field.ComboBox({
                            typeAhead: true,
                            triggerAction: 'all',
                            store: 'EquipmentStatus'
                        })
                    }
                ]
    });

        this.callParent(arguments);
    }

});

【问题讨论】:

    标签: extjs binding combobox


    【解决方案1】:

    我不清楚你的问题,但如果你想在组合框中显示状态并将你从组合框中选择的选项保存为数字,你应该在组合框配置中添加两个 displayField 和 valueField。

        Ext.define('Equipment.view.EquipmentGrid', {
        extend: 'Ext.grid.Panel',
        alias: 'widget.EquipmentGrid',
    
        title: 'Equipment manager',
    
        requires: [
            'Ext.form.field.ComboBox',
            'Ext.grid.column.CheckColumn',
            'Ext.grid.plugin.CellEditing'
        ],
    
        initComponent: function () {
    
            // enable quicktips
            Ext.tip.QuickTipManager.init();
    
            this.cellEditing = new Ext.grid.plugin.CellEditing({
                clicksToEdit: 1
            });
    
            Ext.apply(this, {
    
                    plugins: [this.cellEditing],
    
                    // connect store to grid
                    store: 'Equipments',
    
                        columns: [
                        {
                            header: 'Status',
                            dataIndex: 'status',
                            editor: new Ext.form.field.ComboBox({
                                typeAhead: true,
                                triggerAction: 'all',
                                store: 'EquipmentStatus',
                                // status field will be displayed in combobox
                                displayField: 'status',
                                // id field will be the value of selected status
                                valueField: 'id'
                            })
                        }
                    ]
        });
    
            this.callParent(arguments);
        }
    
     });
    

    如果不是您想要的,请更详细地解释您的问题。希望有帮助。

    【讨论】:

    • 感谢您的回复,您已经理解了我的问题。您的建议将是一个明显的答案。但是当我选择我的选项时,返回的字段显示 valueField (id) 而不是 displayField - 屏幕截图:!select。 !result.
    • 已解决,我也将 valueField 设置为“状态”。奇怪的是,这是我第一次做的,但没有奏效,一定是错字或缺少字段。无论如何,感谢您的时间,Egizeris。一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 2013-01-21
    相关资源
    最近更新 更多