我有一个带有 2 个冻结列的 jqgrid。如果我什么都不做,冷冻工作正常。 在我隐藏/显示另一列(不是冻结的列)后,冻结不起作用。
我使用免费的 jqGrid 版本 4.14.0
我不知道发生了什么。
谁能帮我!提前谢谢..
如果您直接使用showCol
、hideCol
、showHideCol
的低级方法,那么您应该从两种解决方案方法中选择一种在您的情况下提供最佳性能。
列的显示/隐藏相对较慢,因为需要浏览网格的所有行、列标题(包括过滤器工具栏),并且相应单元格上的内联 css 样式需要更改(display
属性应设置为none
或应删除none
值)。之后,网格的 with 和高度也可以更改。如果网格有冻结列,那么在冻结潜水中也应该做同样的事情。此外,应重新计算冻结潜水的宽度和高度,也应重新计算冻结列的每一行的高度。
因此,有两种选择:
- 通过调用
showCol
、hideCol
、showHideCol
隐藏/显示所需的所有列,然后在网格上触发jqGridResetFrozenHeights
事件以强制重新计算冻结潜水的所有宽度/高度属性 - 通过调用
destroyFrozenColumns
销毁冻结的列,通过调用showCol
、hideCol
、showHideCol
来隐藏/显示列,并通过调用setFrozenColumns
再次重新创建冻结的列。
我建议您进行一些测试来选择,从上述两种方式中哪一种在您的应用程序中提供最佳性能。