Ext JS 网格面板间隔移除

Posted

技术标签:

【中文标题】Ext JS 网格面板间隔移除【英文标题】:Ext JS grid panel spacer removal 【发布时间】:2012-05-29 10:13:56 【问题描述】:

我对 Ext JS 4 很陌生,我创建了一个带有固定列的面板。似乎存在某种错误(如在某个论坛上阅读的那样),如果我修复了一个列,则 spacer(xtype: tbspacer) 会自动插入其顶部,从而破坏表格的对齐方式(如果这只是配置错误的问题,请告诉我)。我想做的是移除那个垫片。

为了做到这一点,我必须选择它,但它没有“静态”id,这意味着如果我对视图进行任何修改,分隔符会获得另一个 id,所以我需要一个方法来在不使用 id 的情况下选择它。我试过做这样的事情:

list.query('.tbspacer')[0].setHeight(0);

其中list 是面板。但这似乎不起作用。 list.query() 方法返回一个空数组。我在尝试选择 textfield 时遇到了同样的问题。

是我遗漏了什么,还是只是另一个错误?

这就是我创建锁定列的方式(没什么特别的):


  header: headerName, 
  dataIndex: i, 
  locked: true

编辑这里也是截图:

编辑 那个 spacer 本来就不应该存在,它(也许现在仍然存在?)在那个版本的框架中。请参阅我的另一个问题here。我会将此处唯一的答案标记为已接受,因为它似乎可以解决此问题中提到的问题。

【问题讨论】:

你能提供你的代码吗?并且可能是屏幕截图或微弱的,因此我们可以确切地看到正在发生的事情。 @sha 我用一些代码编辑了我的问题(我不知道我应该从中选择什么)。至于屏幕截图,我无法制作出高质量的屏幕截图。问题是固定列中的所有数据都在其他行的下方。 什么是locked?我在 ExtJs 文档中找不到它。如果您需要禁用调整列的大小 - 使用 resizable: false @sha 他们的文档中似乎缺少它,但它固定了一个列,这意味着当我向右滚动时它不会消失,无论如何它都会保持在第一个位置. 我现在明白你想要实现的目标,但没有截图就无法真正了解问题所在...(将header 替换为text btw) 【参考方案1】:

首先,您执行了错误的查询。它应该只是tbspacer,没有点。其次,不是setHeight(0),为什么不只是destroy呢?

list.query('tbspacer')[0].destroy();

【讨论】:

你知道它为什么会被创建吗?是 4.1 的错误吗? 不知道。但是 Ext JS 中有很多错误,所以这很可能是一个。另一方面,如果locked 是私有 API,那么使用它就不能抱怨“错误”。你最好在煎茶论坛上问。

以上是关于Ext JS 网格面板间隔移除的主要内容,如果未能解决你的问题,请参考以下文章

Ext JS 网格面板事件

Ext js - 将网格值传递到下面的选项卡/网格面板

Ext JS 5 - 将网格面板添加到视口

Ext JS 网格面板复选框被取消选中

EXT JS - 单击传输记录以存储弹出网格面板

带有复选框列的 Ext JS 网格面板