プロパティwidth
はピクセル幅です。
{
xtype: 'grid',
store: store,
selModel: Ext.create('Ext.selection.CheckboxModel', {
mode: 'SINGLE'
}),
layout: 'fit',
columns: [
{
text: "pum",
dataIndex: 'SRD_NAME_FL',
width: 400
}
],
columnLines: true
}
列が1つしかない場合、列幅= 100%にする方法、または複数の列がある場合-最後の列をグリッドの最後まで伸ばす方法は?
ExtJS3の場合、GridPanels forceFit
にviewConfig
を設定します。参照: http://dev.sencha.com/deploy/ext-3.4.0/docs/?class=Ext.grid.GridView
ExtJS 4の場合、GridPanelで直接forceFit
を設定します: http://docs.sencha.com/ext-js/4-0/#/api/-cfg-forceFit 列のflex
と組み合わせて使用します。
v4の例
var p = Ext.Create('Ext.grid.Panel',{
forceFit: true,
columns: [{
xtype: 'gridcolumn',
header: _ll.id,
sortable: true,
resizable: false,
flex: 0, //Will not be resized
width: 60,
dataIndex: 'Id'
}, {
xtype: 'gridcolumn',
header: __ll.num,
sortable: true,
resizable: true,
flex: 1,
width: 100,
dataIndex: 'number'
}
});
v3の例
var p = new Ext.grid.GridPanel({
viewConfig: {
forceFit: true
},
columns: [{
xtype: 'gridcolumn',
header: _ll.id,
sortable: true,
resizable: false,
fixed: true, //Will not be resized
width: 60,
dataIndex: 'Id'
}, {
xtype: 'gridcolumn',
header: __ll.num,
sortable: true,
resizable: true,
width: 100,
dataIndex: 'number'
}
});
追加 flex : 1
ストレッチしたい列に。
ExtJS 4の場合、幅の代わりにフレックスを使用します。 flex:1を設定し、列が1つしかない場合、幅は100%になります。 2つの列があり、flex:1を両方に設定した場合、両方の幅は50%になります。
Flexは、使用可能な幅を列間で比率で分配します。たとえば、1つの列に対してflex:2、他の2つの列に対してflex:1と言うと、最初の列は他の2つの列の2倍の幅になります。フレックスに10進値を使用することもできます。 0.5
グリッドに単一の列がある場合、items:[{}]
表記とitems:{}
表記の使用には大きな違いがあることに注意してください。
実際、これは期待どおりに機能しません(少なくともExtJS 4.2では):
Ext.define('My.SingleColumnGrid', {
extend: 'Ext.grid.Panel',
store: {type: 'someStore'},
forceFit: true,
columns: {
items: [
{
text: 'Something',
flex: 1,
dataIndex: 'something'
}
]
}
});
角かっこを削除するだけで、魔法のように期待どおりに機能し始めます(つまり、グリッド幅を埋めるために拡張する単一の列があります)。
これはほとんど私を夢中にさせました;-P。