2015-12-29 7 views
0

У меня есть сводка с заранее заполненными значениями. Нажав кнопку «Утвердить все», я хочу установить его значение на некоторое значение.Установка значения combobox с помощью extjs

Вот мой код

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 («статус») не определен.

+1

Ваше поле «статус» не создается при нажатии кнопки, потому что это редактор столбцов. –

+0

@ EliasMedeiros прав. Что вы на самом деле пытаетесь сделать здесь? – abeyaz

+0

У меня есть кнопка под названием «Утвердить все» в сетке на клике. Я просто хочу установить комманду состояния на некоторое значение. – Techy

ответ

0

Вы должны установить значение в записях, а не в поле со списком. В поле со списком всегда используется значение, установленное в записи.

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

Спасибо Alexander Я хочу сделать это onclick of Approve all button. – Techy

+0

Спасибо @ Alexander Это сработало! – Techy

Смежные вопросы