使用extjs设置组合框值

时间:2015-12-29 15:59:10

标签: extjs combobox

我有一个预填充值的组合框。 点击批准所有按钮我想将其值设置为某个值。

这是我的代码

var myStore = new Ext.data.ArrayStore({
                sortInfo: {field: 'Name', direction: "ASC"},
                data: arrHoursData,
                fields: [{name: 'Id', type: 'string'},
                         {name: 'Name', type: 'string'},
                          {name: 'Hours', type: 'string'},
                         {name: 'AssignmentId', type: 'string'},
                         {name: 'Status', type: 'string'}
                    ]
                });
var statusStore = new Ext.data.Store({
    data: arrStatus,
    fields: ['Id', 'Name']
});

var hoursGrid = Ext.create('Ext.grid.Panel', {
                store: myStore,
                width: 340,
                height: 270,
                collapsible: false,
                selType: 'cellmodel',
                plugins: [
                    Ext.create('Ext.grid.plugin.CellEditing', {
                        clicksToEdit:1
                    })
                ],
                columns: [ 
                     {header: 'Id', dataIndex: 'Id',hidden: true},
                     {header: 'Date',dataIndex: 'Name', width:140},
                     {header: 'Hours',dataIndex: 'Hours', width:100,  editor: {xtype: 'numberfield', minValue: 0, allowBlank: false}},
                     {header: 'Status',dataIndex: 'Status', width:100, editor: { xtype: 'combobox',store: statusStore, queryMode: 'local', displayField: 'Name', valueField: 'Id',id:'status'}, renderer: function (value) {
                            var label = '';
                            jQuery.each(arrStatus, function(k,v)
                            {
                                if(v['Id'] == value)
                                    label = v['Name'];
                            });

                            return label;
                        }
                  }
                ]
            });

var win = new Ext.Window({
    closable: true,
    title: "Edit Hours",
    layout: 'form',
    modal: true,
    width: 360,
    height: 300,
    plain: true,
    border: false,
    items: [
         {
            flex: 1,
            xtype: 'container',
            style:'margin-top:15px',
            layout: {
                type: 'hbox',
                align: 'stretch'
            },
            items:[hoursGrid]
        }
    ],
    buttons: [
                    {
            text: 'Approve All',
            handler: function () 
            {
                               Ext.getCmp('status').setValue(approvedStatusId);
            }
         }
    ],

});

win.show(g);

我也尝试使用getCmp设置其值,但它给了我错误 Ext.getCmp(' status')未定义。

1 个答案:

答案 0 :(得分:0)

您必须在记录上设置值,而不是组合框。组合框始终使用记录中设置的值。

grid.getStore().each(function(record) {
    record.set("Status",approvedStatusId);
};