如何在 ag-grid 中自动换行标题

Posted

技术标签:

【中文标题】如何在 ag-grid 中自动换行标题【英文标题】:how to wordwrap a header in 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;"> 我认为这会导致标题的第二行不显示。

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

【问题讨论】:

请帮助***.com/questions/65018177/… 【参考方案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;

【讨论】:

以上是关于如何在 ag-grid 中自动换行标题的主要内容,如果未能解决你的问题,请参考以下文章

反应 ag-grid 行自动高度不起作用

如何在 UIPickerView 中自动换行

如何在 QWebEngineView 中禁用工具提示(标题)的自动换行

表格里如何自动换行?

如何在 UITextView 中自动换行?

notepad++ 如何自动换行