0

Ext Js を使用してアプリケーションを開発していますが、問題があります。私のビューの 1 つで、ユーザーは動的に新しい列を追加できます。グリッドでは、最初の Ext コンポーネントは行番号付けであり、ユーザーが追加されると行を列挙します。それ。ただし、行が追加されると、以下に示すように、「rownumberer」である最初の列が一緒に成長します。誰でも私に洞察を提供できますか?ありがとう!

ここに画像の説明を入力

コード:

var store = Ext.getStore('store');
var rowEditing = Ext.create('Ext.grid.plugin.RowEditing');
var contador = 0;
Ext.define('Grid', {
extend : 'Ext.grid.Panel',
title: 'Grid',
store: 'StoreTemp',
columns: [ 
    {
     xtype: 'rownumberer'
 },{    
     header : "Data Type",
     dataIndex : 'nome',
     flex : 0.8,
     editor:'textfield'
 }],            
dockedItems : [ {
xtype : 'toolbar',
items : [ {
    xtype: 'button',
    tooltip: 'Click here to set data type on axis Y',
    id : 'buttonTipoDado',
    icon : Webapp.icon('edit.png'),
    iconAlign : 'top',
    handler : function() {
        var gridView = Ext.ComponentQuery.query('gridpanel')[1];
        Ext.Msg.prompt('Alert', 'Insert data type: ', function(
                btn, text) {
            if (btn == 'ok') {
                gridView.getView().getHeaderAtIndex(1).setText(text);
                var botao = Ext.getCmp('buttonTipoDado');
                botao.setDisabled(true);
            } else {
                Ext.Msg.alert('Alert', 'Insert type!');
            }
            gridView.getView().refresh();
        });
    }
}, {
    xtype: 'button'
    icon : Webapp.icon('add1.png'),
    iconAlign : 'top',
    handler : function() {
        var gridView = Ext.ComponentQuery.query('gridpanel')[1];
        grid = gridView.headerCt;
        if(grid.getGridColumns().length >= 1){
            var column = Ext.create('Ext.grid.column.Column', {text : contador, editor: {xtype: 'textfield', flex: 0.5}});
            gridView.headerCt.insert(gridView.columns.length, column);
            var botao = Ext.getCmp('buttonRemoverColuna');
            botao.setDisabled(false);
        }
        contador++;
    }
}, {
    xtype: 'button',
    icon : Webapp.icon('cancel.png'),
    iconAlign : 'top',
    id : 'buttonRemoverColuna',
    handler : function() {
        var gridView = Ext.ComponentQuery.query('gridpanel')[1];
        gridView = gridView.headerCt;
        var botao = Ext.getCmp('buttonRemoverColuna');
        if(gridView.getGridColumns().length == 2){
            botao.setDisabled(true);    
            contador = 0;
        }
        else{
            gridView = gridView.remove(gridView.getGridColumns().length - 1);               
        }
    }
}, {
    xtype: 'button',
    icon : Webapp.icon('add1.png'),
    iconAlign : 'top',
    handler: function(){
        var gridView = Ext.ComponentQuery.query('gridpanel')[1];
        grid = gridView.getView();
        grid.insert(0, new Ext.create('Model'));
        rowEditing.startEdit(0, 0); 
        gridView.getView().refresh();
    }   
}, {
    xtype: 'button'
    icon : Webapp.icon('cancel.png'),
    iconAlign : 'top',
    handler: function(){
        store.removeAt(0);
    }   
}]
} ],
plugins : [ rowEditing ]

});
4

1 に答える 1

1

問題はData Type列のflex構成にあります。代わりにそれを変更する必要がありますflex: 1

rownumberer列にはデフォルトの構成があるwidth: 23ため、正確な幅を指定する必要はありません。

于 2012-07-25T18:18:38.447 に答える