【问题标题】:SlickGrid with first column fixed第一列固定的 SlickGrid
【发布时间】:2011-12-30 09:43:36
【问题描述】:

是否可以修复 SlickGrid 的第一列?这样它在水平滚动期间始终可见,如标题行?

感谢您的帮助!

【问题讨论】:

标签: javascript slickgrid


【解决方案1】:

还有另一个论坛链接(现在找不到)将我带到JLynch's fork。他维护了 1.4.3 标记和冻结列和行的补丁,以及维护 2.0 头。这是带有 frozen rows and columns 的 2.0 示例。

在该示例中,作者使用了几个附加选项属性:

        ,topPanelHeight: 25
        ,frozenColumn: 2
        ,frozenRow: 5

希望这可以满足您的需求,而无需过多地破解核心!

【讨论】:

  • 他的 slickgrid.js 与普通的不同,很难用新的 slickgrid 版本做一些更新。我们应该另辟蹊径。
【解决方案2】:

我想你可以在活动.onViewportChanged() 中进行下一步:

  1. 获取带有.getColumns() 的列并存储在数组变量arrColumns 中。
  2. 然后检测第一列。
  3. 将带有.getData() 的数据存储在数组变量arrData
  4. 排序arrColumns,将第一列放在开头。
  5. 将新arrColumns 中的列设置为.setColumns()
  6. 按照新的arrColumns 的顺序重新组装arrData
  7. 致电.resizeCanvas()
  8. 交叉手指。 :D

抱歉,我没有找到一种方法或选项可以让您以自己想要的方式进行此行为。

好吧,看看你对this 的看法。它远非完美,但它是一个想法。如果方法 scrollTo() 是公开的,我会做得更好。

【讨论】:

  • 为什么不尝试做一些测试呢?
  • 性能不是很好,因为您必须处理网格的所有数据。下一个问题:水平滚动是逐像素而不是逐列完成的。
  • 这是一个非常棒的例子。要使其完美,您所要做的就是将该固定列偏移与其他列相同的像素数。
【解决方案3】:

我知道这不能完全满足您的需求,但您可以通过在选项对象中将 forceFitColumns 设置为 true 来完全避免水平滚动。

我认为这种行为对于屏幕很小的用户来说是不可取的。

【讨论】:

  • 不,他需要 Excel 中的冻结窗格之类的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
相关资源
最近更新 更多