垂直スクロール バーと水平スクロール バーのない Extjs グリッドを作成しようとしています。これは、グリッドが両方向に無限に拡大する必要があることを意味します。
ここに私のコードがあります:
Ext.require([
'Ext.grid.*',
'Ext.data.*',
'Ext.util.*',
'Ext.state.*'
]);
Ext.onReady(function() {
Ext.QuickTips.init();
// setup the state provider, all state information will be saved to a cookie
//Ext.state.Manager.setProvider(Ext.create('Ext.state.CookieProvider'));
var cols = 50;
var colsData = [];
var fields = [];
for(var i=1;i<cols;i++){
colsData.push(
{
text : 'COLUMN - ' + i,
//flex : 1,
width : 120,
sortable : true,
dataIndex: 'COL'+i
});
fields.push(
{name: 'COL'+i, type: 'int'}
);
}
var myData = [];
//create data
for(var i=1;i<500; i++){
var subData = [];
for(var j=1;j<cols; j++){
subData.push(Math.floor((Math.random()*10000)+1));
}
myData.push(subData);
}
function change(val) {
return val;
}
// create the data store
var store = Ext.create('Ext.data.ArrayStore', {
fields: fields,
data: myData
});
// create the Grid
var grid = Ext.create('Ext.grid.Panel', {
store: store,
stateful: true,
//stateId: 'stateGrid',
autoHeight: true,
autoWidth: true,
autoScroll: false,
//containerScroll: false,
columns: colsData,
//height: 100,
//width: 600,
title: 'Array Grid',
renderTo: 'grid-example',
viewConfig: {
//stripeRows: false,
//forceFit: false
}
});
});
グリッドを div 要素にレンダリングしているので、実際にはレイアウトなどは使用しません。
<div id="grid-example" class="myDiv"></div>
およびスタイル:
<style type="text/css">
body{
overflow: visible;
}
.myDiv{
display: block;
/*float: left;*/
overflow: visible;
}
</style>
これは私のブラウザのスクリーン ショットで、垂直スクロール バーが表示されています [予想どおり]。
問題は
水平スクロール バーがなく、列の一部がページから切り取られているだけで、表示されているデータを表示する方法がありません。
extjs がグリッドの高さと幅を計算しようとしていることがわかります。高さの場合は正しいですが、幅の場合は正しくありません。計算された幅は、グリッド内の列の合計ではなく、ブラウザーの幅に等しくなります。
あなたの側からの提案や言葉に感謝します。誰でも私を助けることができますか?