2011-11-16 109 views
5

是否可以使SlickGrid的第一列固定?这样它在水平滚动期间总是可见的,就像标题行一样?第一列固定的SlickGrid

感谢您的帮助!

+0

所以我没有在源代码中找到任何东西(版本SlickGrid v2.0 alpha)。也许答案只是“不”。 – user1027167

+1

对于来自SlickGrid作者的同一问题,这里的答案是:http://groups.google.com/group/slickgrid/browse_thread/thread/ba6a85279f3cfd5f – njr101

回答

5

我认为你可以在事件.onViewportChanged()使下一个步骤:

  1. 获取列与.getColumns()并存储在一个数组变量arrColumns
  2. 然后检测第一列。
  3. 商店中一个数组变量arrData
  4. 排序arrColumns把第一列的开头与.getData()数据。
  5. 坐落在新arrColumns列与.setColumns()
  6. 重组arrDataarrColumns的顺序。
  7. 致电.resizeCanvas()
  8. 横过你的手指。 :D

对不起,但我没有找到一种方法或选项,因为您可以以您想要的方式进行此操作。

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

+0

感谢您的考虑:)但我认为这不是很高性能... – user1027167

+0

为什么不尝试做一些测试? – Galled

+0

不是很高效,因为您必须处理网格的所有数据。下一个问题:水平滚动是逐个像素完成的,而不是逐列完成的。 – user1027167

0

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

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

+0

不,他需要像Excel中的冻结窗格。 – Galled

+1

因此,我的答复中的第一句话... – vemv

11

还有另一个论坛链接(现在找不到它),导致我的JLynch's fork。他保留了1.4.3标签和他的冻结列和行的补丁,并保持了2.0头。这里是两个frozen rows and columns的2.0例子。

在那个例子中,笔者采用了几个附加选项属性:

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

希望这你想要做什么,而无需破解的核心太多了!

+0

他的slickgrid.js与普通的不同,很难用新的slickgrid版本做一些更新。我们应该找到另一种方式。 – Stiger