当列支持文本换行时,jqGrid自动滚动会中断

时间:2013-02-25 11:48:21

标签: jqgrid jqgrid-asp.net

启用自动滚动功能,即scroll: 1,并在 jqGrid,v4.4.1 列中启用自动换行功能后,网格/表格无法滚动如果行高度因1个或多个列中的文本换行而发生更改,则返回到最后一个记录。如果所有行只使用一行(无包装),则自动滚动功能非常有效。如果某些行使用多行(整个表中的可变高度行),则自动滚动功能开始分解。最常见的是,这意味着您无法访问结果的最后一页,因为网格错误地计算了垂直滚动条的长度。

支持自动换行的样式:

.ui-jqgrid tr.jqgrow td {
  font-weight: normal; 
  overflow: hidden; 
  white-space: pre-wrap !important; /* changed to enable word wrap */
  height: 22px;
  padding: 0 2px 0 2px;
  border-bottom-width: 1px; 
  border-bottom-color: inherit; 
  border-bottom-style: solid;
}

有没有办法解决这个问题?目前我正在关闭文本包装并只是扩大列。

可以修改populateVisible来计算垂直滚动条的长度吗?它似乎是根据height of the first row x num rows (line 852 of v4.4.1)计算的。我怀疑答案是'不',但是......

1 个答案:

答案 0 :(得分:0)

我能想到的唯一答案是为每个td设置一个固定的高度,并且仍允许自动换行。这不是直截了当的:

  1. 更改.ui-jqgrid tr.jqgrow td中的高度。 (如果你也使用它,可能需要在.ui-jqgrid tr.jqgroup td上复制这种风格。)

    .ui-jqgrid tr.jqgrow td {
      font-weight: normal; 
      overflow: hidden; 
      white-space: pre;
      height: 42px; /* higher fixed height, default is 22px */
      padding: 0 2px 0 2px;
      border-bottom-width: 1px; 
      border-bottom-color: inherit; 
      border-bottom-style: solid;
    }
    
  2. 使用Master Oleg的解决方案restrict the maximum height of row in jqgrid。即自定义格式化程序,使用tddiv中的内容包装起来。

  3. 注意:最后我只使用22px(默认)的单行,没有包装并将cols设置得更宽 - 更快并且仍允许工具提示显示任何隐藏文本。