在EditorGridPanel中连接

时间:2014-02-17 09:18:58

标签: extjs extjs3 concat

在我的editorGridPanel里面,我有三列。我希望将我的'firstname'和'lastname'列中的数据直接连接到或当光标或焦点现在位于每行的'email address'列中时。有人可以帮我解决这个问题吗?

          var cm = new Ext.grid.ColumnModel({

            defaults: {
                sortable: true            
            },
            columns: [{
                    id: 'id',
                    header: 'ID',
                    dataIndex: 'id',
                    width: 220,
                    editable: false,
                    hidden: true
                },
                {
                    id: 'firstname',
                    header: 'First Name',
                    dataIndex: 'firstname',
                    width: 220,

                    editor: new fm.TextField({
                        allowBlank: false                           
                    }),
                    listeners: {


                        click: function(){
                            Ext.getCmp('b_save').enable();
                            Ext.getCmp('b_cancel').enable(); 

                        }                               
                    }
                },
                {
                    id: 'lastname',
                    header: 'Last Name',
                    dataIndex: 'lastname',
                    width: 220,
                    align: 'left',
                    editor: new fm.TextField({
                        allowBlank: false
                    }),
                    listeners: {
                        click: function(){
                            Ext.getCmp('b_save').enable();
                            Ext.getCmp('b_cancel').enable(); 
                        }                               
                    } 
                },
                {
                    id: 'email_address',
                    header: 'Email Address',
                    dataIndex: 'email_address',
                    width: 330,
                    align: 'left',
                    editor: new fm.TextField({
                        allowBlank: false
                    }),
                    listeners: {
                        click: function(){
                            Ext.getCmp('b_save').enable();
                            Ext.getCmp('b_cancel').enable(); 
                        }                               
                    } 
                },






             var grid = new Ext.grid.EditorGridPanel({
                viewConfig: {
                forceFit: true,
                autoFill: true                  

            },
                id: 'maingrid',
                store: store,

                cm: cm,                    

                width: 700,
                anchor: '100%',
                height: 700,

                frame: true,
                loadMask: true,
                waitMsg: 'Loading...',
                clicksToEdit: 2,
                sm : new Ext.grid.RowSelectionModel({
                    singleSelect: true
                    ,onEditorKey : function(field, e) {
                    if (e.getKey() == e.ENTER) {
                    var k = e.getKey(), newCell, g = this.grid,ed = g.activeEditor || g.lastActiveEditor;
                    e.stopEvent();
                    /*ed.completeEdit();*/
                    if(e.shiftKey){
                    newCell = g.walkCells(ed.row, ed.col-1, -1, this.acceptsNav, this);
                    }else{
                    newCell = g.walkCells(ed.row, ed.col+1, 1, this.acceptsNav, this);
                    }
                    if(newCell){
                    g.startEditing(newCell[0], newCell[1]);
                    }
                    }
                    else if(e.getKey() == e.TAB){
                        var k = e.getKey(), newCell, g = this.grid,ed = g.activeEditor || g.lastActiveEditor;
                    e.stopEvent();
                    newCell = g.walkCells(ed.row, ed.col+1, 1, this.acceptsNav, this);
                    if(newCell){
                    g.startEditing(newCell[0], newCell[1]);
                    }
                    }
                    }

                }),
               });

1 个答案:

答案 0 :(得分:1)

您可以添加联接的firstnamelastname,并将其设置为beforeedit email_address事件的监听者editorgrid字段中的值:

listeners: {
    beforeedit: function(e) {
        if (e.field === 'email_address' && e.value === '') {
            var newValue = e.record.get('firstname') + '.' + e.record.get('lastname');
            e.record.set('email_address', newValue);
        }
    }
},

举例说明: https://fiddle.sencha.com/#fiddle/3mf