【问题标题】:how to wordwrap a header in ag-grid如何在 ag-grid 中自动换行标题
【发布时间】:2016-02-26 22:12:57
【问题描述】:

使用 ag-grid,有没有办法将长标题拆分为 2 行...

columnDefs headerName 中的中断:'Long<br />Header' 让我走到了那里(使用开发工具,我可以看到文本有 br),但是周围元素之一的高度为 25px; <div class="ag-header" style="height: 25px;"> 我认为这会导致标题的第二行不显示。

我想知道是否可以使用组标题作为临时拆分文本,但长期(当我需要分组时)这不是一个选项...

【问题讨论】:

标签: ag-grid


【解决方案1】:

尝试将以下内容添加到您的 CSS:

.ag-header-cell-label {
    text-overflow: clip;
    overflow: visible;
    white-space: normal;
}

并将其添加到您的网格选项中:

headerHeight: 48

【讨论】:

  • 看起来只有空格:需要正常
  • 这对我有用,但现在由于菜单图标,我得到了一些未对齐的文本。右侧的菜单图标将顶行向左凸出。这会导致两行标题不在彼此顶部居中,而是在左侧。有什么关于造型的建议吗?
  • overflow-wrap: break-word; 如果您有较长的单字标题(例如,如果您是德国人),也会有所帮助。
  • 此选项不适用于我的 ag-grid@15.0.0。有关适用于此版本的替代解决方案,请参阅下面的答案。
  • 如果您想指定换行符出现的位置,请使用white-space: pre
【解决方案2】:

使用 ag-grid@15.0.0,只有以下解决方案有效:

.ag-header-cell-label .ag-header-cell-text {
  white-space: normal !important;
}

这是我在 css 工作中第一次真正需要使用 !important

【讨论】:

  • 指定主题类更具体,你应该避免需要!important。例如。 .ag-theme-material .ag-header-cell-label .ag-header-cell-text { height: auto; overflow-wrap: normal; white-space: normal; } 另一种更具体的方法是将您自己的类应用于列定义中的标题。所以有几种方法可以避免使用 !important。
  • 上述解决方案将帮助您拆分标题文本。如果我建议使用 text-overflow 和溢出 css 属性 ****** .ag-header-cell-label .ag-header-cell-text { text-overflow: clip;溢出:可见;空白:正常!重要; } ****
【解决方案3】:

对我来说,使用 angular@5.5.1ag-grid@13.3.1 的组合,以下工作:

::ng-deep .ag-header-cell-text {            
    text-overflow: clip !important;
    overflow: visible !important;
    white-space: normal !important;
}

::ng-deep 是一个 Angular CSS 组合器(指令)。这是基于 Stian 的回答,不同之处在于,在我的情况下,它不是 .ag-header-cell-label,而是仅适用于 .ag-header-cell-text

在网格选项对象中,您必须设置标题高度:

this.testGridOptions = <GridOptions>{
            onGridReady: () => {
                this.testGridOptions.api.setHeaderHeight(75);
                this.testGridOptions.api.sizeColumnsToFit();
            }
        };

【讨论】:

  • 我正在使用 ag-grid@15.0.0,但这种方法对我不起作用。
  • 我想我找到了答案。我将在下面发布我的解决方案。
  • 这对我有用 (ag-grid@21.0.1) 仅当您将 css 放在组件级别时。
  • 如果您通过组件中的 scss 文件应用样式,则需要 ng-deep。
  • 这对我有用,即使没有!important
【解决方案4】:

对我来说,上述解决方案均无效。对我有用的是将 headerHeight(在 GridOptions 中)设置为您指定的高度,然后添加以下内容:

.ag-header-cell-text {
   overflow: visible;
   text-overflow: unset;
   white-space: normal;
}

就我而言,我不需要向 .ag-header-cell 包装类添加任何内容。

我正在使用以下版本:

"ag-grid-angular": "18.1.0",
"ag-grid-enterprise": "18.1.1",

【讨论】:

    【解决方案5】:

    把它放在网格选项中

    标题高度:50

    在 style.css 中

    .ag-header-cell-label .ag-header-cell-text {
        white-space: normal !important;
     }
    

    【讨论】:

      【解决方案6】:

      如果您需要在标题中的某个位置换行,您可以使用white-space: pre 来实现此目的。将此添加到 CSS(如果您使用不同的主题,请更改主题):

      .ag-theme-material .ag-header-cell-label .ag-header-cell-text {
        white-space: pre;
      }
      

      然后将\n 字符相应地添加到您的标题名称中。您还必须使用gridApi.setHeaderHeight()gridApi.setGroupHeaderHeight() 确保有足够的高度

      【讨论】:

      • 预线也是一种选择,在我的情况下更合适
      【解决方案7】:

      你可以试试下面的css:

      .ag-header-group-text,
      .marginright-xs {
        white-space: pre-wrap;
      }
      

      【讨论】:

        猜你喜欢
        • 2019-02-12
        • 2019-08-22
        • 1970-01-01
        • 2020-12-31
        • 2022-07-15
        • 1970-01-01
        • 2016-03-11
        • 2019-08-21
        • 1970-01-01
        相关资源
        最近更新 更多