проблема изменения размера сетки - PullRequest
1 голос
/ 23 февраля 2010

Как изменить размер панели сетки в соответствии с размером окна. Я дал viewconfig { forcefit:true } но в Internet Explorer сетка не масштабируется с размером окна.

Пожалуйста, помогите мне в этом вопросе:

var grid = new Ext.grid.GridPanel({
  store    : store,
  colModel : colModel,
  view     : gv,
  stateId  : 'myGridid',             
  stateful : true,    
  plugins  : [filters],           
  autoHeight : true,            
  stripeRows : true,         
  id         : 'my-grid',
  title      : xppo.st('SDE_PRINTERS'),         
  viewConfig : { forceFit: true },           
  tbar       : tb,
  listeners: {
    cellclick: function(grid, rowIndex, colIndex, e) {
      colClicked = colIndex;
      if (colClicked != 0) {
        if (grid.getColumnModel().getDataIndex(grid.getColumnModel().getColumnId(colIndex)) == 'Incident') {
          return; }
      }

      if (colClicked != 0) {
        var record = grid.getStore().getAt(rowIndex);
        var paramInScope = record.get("InScope");
        var paramAssetID = record.get("AssetID");

        if (paramInScope == 'Yes') {
          OpenPrinterDetailsPopup(paramAssetID, 800, 600);
        } else {
          OpenPrinterDetailsPopup(paramAssetID, 300, 200);
        }
      }

    }
  , rowdblclick: function(grid, rowIndex, columnIndex, e) {
      if (colClicked != 0) {
        var record = grid.getStore().getAt(rowIndex);
        var paramInScope = record.get("InScope");
        var paramAssetID = record.get("AssetID");

        if (record == null) { return; }
        if (paramInScope == 'Yes') {
          OpenPrinterDetailsPopup(paramAssetID, 800, 600);
        } else { OpenPrinterDetailsPopup(paramAssetID, 300, 200); }
      }
    }
  , expandedFilter: function() { Ext.getCmp('my-grid').setWidth(860); }
  , collapsedFilter: function() { Ext.getCmp('my-grid').setWidth(1060); }
  }
});

var userHidden = false;
if (showColumn) { grid.getColumnModel().setHidden(23, false); }
else { grid.getColumnModel().setHidden(23, true); }

if (fl1) { grid.getColumnModel().setHidden(3, fl1); }
else { grid.getColumnModel().setHidden(3, flags1); }

grid.getStore().reload();
grid.render('grid-example');

});

Ответы [ 2 ]

1 голос
/ 24 февраля 2010

Если вы хотите, чтобы какой-либо компонент занимал все окно браузера и изменял его размеры, используйте Viewport и установите макет на fit.

Ext.onReady(function(){
  // ...your grid code...
  //grid.render('grid-example');  <- do not render the grid, the viewport will do this for you
  var viewport = new Ext.Viewport({
    layout: 'fit',
    items: [grid]
  });
});

Обратите внимание, что теперь ваша разметка должна быть <body></body>, поскольку Viewport будет управлять телом браузера.

0 голосов
/ 24 февраля 2010

Бит Forcefit: true применяется, только если сетка находится внутри другого контейнера, я считаю.

Если у вас просто есть свободная плавающая сетка, и она не управляется менеджером Ext Layout, я думаю, вам нужно указать размер.

Самое простое решение - это указать ViewPort или Border Layout на один уровень выше сетки, а затем указать параметр forceFit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...