如何在 Ext.Viewport 上方渲染一些东西

Posted

技术标签:

【中文标题】如何在 Ext.Viewport 上方渲染一些东西【英文标题】:How to render something above Ext.Viewport 【发布时间】:2013-06-12 09:44:20 【问题描述】:

我有视口:

new Ext.Viewport(
  layout:'fit',
  hideBorders:true,
  items:[panel1,panel2,panel3],
);

现在我想在视口上方显示组合框:

var myCombo= new Ext.ComboBox(
  store:myStore,
  editable:false,
  renderTo:Ext.getBody(),
  triggerActions:'all',
  mode:'local',
  cls:'scales'
);

css:

.scales
  position:absolute,
  botton:1em,
  right:1em,
  background-color:white

但它在左侧呈现。如何在右下角渲染?

更新

现在我将组合放入 Panle:

myPanel= new Ext.Panle(
items[myCombo],
renderTo:Ext.getBody(),
cls:'scales',
border:false
);

现在我的组合在右下角。但看起来像这样:

即使我从应用程序中删除视口代码,我也会得到相同的结果。我可以用组合做点什么吗?

【问题讨论】:

你不能。视口将占据整个身体。如果要使组合框可见,请使用面板而不是视口 @javapirate:你能举个例子吗? 【参考方案1】:

你的 CSS 坏了,应该是:

.scales
    position: absolute; 
    bottom: 1em;
    right: 1em;
    background-color: white;

注意分号和bottom,而不是botton

编辑:

你应该将你的组合渲染到一个窗口中,让 Ext 管理定位问题。这是一个呈现极简窗口的示例:

var win = new Ext.Window(
    closable: false
    ,resizable: false
    // uncomment to make the window draggable
    //,title: '...'
    ,border: false
    // uncomment to make the window modal
    //,modal: true
    ,items: [
        xtype: 'combo'
        ,store: ['Foo', 'Bar', 'Baz']
    ]
);

win.show();

// then use anchorTo to position the window where you want:
win.anchorTo(Ext.getBody(), 'br-br', [10, 10]);

请参阅anchorTo 的文档。

【讨论】:

在我的代码中没问题。我只是在写问题时出错。 嗯。我会尝试使用窗口。【参考方案2】:

试试

new Ext.panel.Panel(
      layout:'fit',
      items:[panel1,panel2,panel3],
);

或者将你的组合放在视口项中:

new Ext.panel.Panel(
  layout:'fit',
  items:[panel1,panel2,panel3, combo],
);

【讨论】:

尝试使用您的布局配置。现在你似乎在主面板中使用layout: fit。试试layout:autolayout:vbox

以上是关于如何在 Ext.Viewport 上方渲染一些东西的主要内容,如果未能解决你的问题,请参考以下文章

EXT如何在一个页面中显示两个Gridpanel

是否可以在列表视图上方放置一些东西?

改变观点 - Sencha

django - render_to_response - 渲染了一些东西

如何在条形图(Python)的条形上方写文本?

如何使用添加方法 Extjs 组件到另一个 Extjs 组件(moderntoolkit)