如何在网格编辑模式下以编程方式设置字段组件

时间:2012-05-01 07:13:59

标签: javascript extjs4

我想用comboxbox和字段编辑网格。 在编辑选定的行时,在选择组合框的事件时,我想将一些值从数据库设置为网格中的字段。 当行处于编辑模式时,我不知道如何在字段控件中设置任何值。 有人建议“使用EditorGridPanel,你应该为控件分配编辑,而不是直接数据库”我,但我不知道如何。

这是我的代码

var triprate_idEditor = {
xtype         : 'combobox'
, typeAhead     : true 
, triggerAction : 'all'
, displayField  : 'name'
, valueField    : 'id'
, store         : 'TriprateAllStore'
, queryMode     : 'local'
, emptyText     : 'Select a name...'
, listeners: 
  {
   select: function(combo, rec) {
        console.log(' here');
//        var triprateall = Ext.data.StoreManager.lookup('TriprateAllStore');
//        triprateall.filter(id:combo.value);

        var g = Ext.getCmp('Tripgrid-Id');
        //return default value 0
        console.log(g.getSelectionModel().selected.items[0].data.triprate); 

    //get triprate from database, excluded here 
    //set triprate to 400 but not in editor
    g.getSelectionModel().selected.items[0].data.triprate = 400;

    //return value 400
        console.log(g.getSelectionModel().selected.items[0].data.triprate); 
    }
}

var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
    clicksToEdit: 2,
    id: 'TripEditingGrid',
    errorSummary: false
});

Ext.define('Fleet.view.grids.TripGrid',
{
    extend      : 'Ext.grid.Panel',
    alias       : 'widget.Tripgrid',  //xtype
    id          : 'Tripgrid-Id',  //Unique Id
    store       : 'TripStore',
    selType     : 'rowmodel',
    plugins: [rowEditing],
    columns :
            [
          {
              header    : 'id'
            , dataIndex : 'id'
            , width     : 80
            , field     : { xtype     : 'numberfield' } 
          },
          {
              header    : 'triprate id'
            , dataIndex : 'triprate_id'
            , width     : 100
            , filter    : true
            , editor    : triprate_idEditor
            , renderer  : function(value, metaData, record, rowIndex, colIndex, store, view){
                    return record.data.triprate_name7; //desc column for display in gird
                  }
          },
          {
              header    : 'triprate'
            , dataIndex : 'triprate'
            , width     : 80
            , field     : { xtype     : 'numberfield' } 
          },
          {
              header    : 'status'
            , dataIndex : 'status'
            , width     : 70
            , renderer  : formatBoolean
            , editor    : checkboxEditor 
          }
            ]
});

1 个答案:

答案 0 :(得分:0)

首先,在定义网格列时应使用editor属性,并将代码定义为组合框编辑器。