SlickGrid固定第一列

5

是否有可能使SlickGrid的第一列固定?这样在水平滚动时它始终可见,就像标题行一样?

感谢您的帮助!


所以我在源代码(版本SlickGrid v2.0 alpha)中找不到任何内容。也许答案只是“没有”。 - user1027167
1
这里有一个关于同一问题的答案,来自SlickGrid作者:http://groups.google.com/group/slickgrid/browse_thread/thread/ba6a85279f3cfd5f - njr101
3个回答

12

我曾经看过一个论坛链接(现在找不到了),它引导我去访问 JLynch的分支。他维护了一个1.4.3标记版本,带有他的冻结列和行的修补程序,并且还维护一个2.0版本。这里是2.0示例,包括冻结行和列

在这个示例中,作者使用了一些额外的选项属性:

        ,topPanelHeight: 25
        ,frozenColumn: 2
        ,frozenRow: 5
希望这个能满足你的需求,而不必在核心部分上进行太多的修改!

他的slickgrid.js与普通版本不同,很难使用新的slickgrid版本进行更新。我们应该寻找另一种方法。 - Stiger

5
我认为你可以在事件 .onViewportChanged() 中执行以下步骤:
  1. 使用.getColumns()获取列,并将其存储在数组变量arrColumns中。
  2. 然后检测第一列。
  3. 使用.getData()将数据存储在数组变量arrData中。
  4. arrColumns排序,将第一列放在开头。
  5. 使用.setColumns()设置新的arrColumns中的列。
  6. 重新组装arrData,按照新的arrColumns的顺序。
  7. 调用.resizeCanvas()
  8. 祈求好运。:D
抱歉,我没有找到一个方法或选项可以按照你想要的方式实现此行为。
好吧,看看你对这个的想法。它远非完美,但是这是一个想法。如果方法scrollTo()是公共的,我会做得更好。

为什么不尝试进行一些测试呢? - Galled
不是很高效,因为你必须处理网格中的所有数据。下一个问题:水平滚动是按像素而不是按列来完成的。 - user1027167
1
这是一个非常棒的例子。如果你把固定列的偏移量与其他列相同,它就会完美无缺了。 - Nick Retallack

0

我知道这可能不完全符合您的需求,但是您可以在选项对象中将forceFitColumns设置为true,从而完全避免水平滚动。

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


不,他需要类似于Excel中的冻结窗格的功能。 - Galled

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接