农业网格列文本截断问题

时间:2018-07-27 06:44:19

标签: javascript angularjs ag-grid

要根据文本呈现列宽。跨过列的最小宽度(200px)后,缺少几个字符。

注意:列正在动态加载,因此我不能为每列添加width属性。

我正在使用Ag-Grid Enterprise版

感谢您的进阶。

3 个答案:

答案 0 :(得分:0)

不能。您必须在columnDef

中预设列的宽度值
const columnDefs: Array<ColDef | ColGroupDef> = [
  // ...
  {
    // ...
    width: number,
  }
];

您还可以在列定义中拥有cellStylecellClass属性。

您可以在此处查看API:https://github.com/ag-grid/ag-grid/blob/master/packages/ag-grid/src/ts/entities/colDef.ts

答案 1 :(得分:0)

我认为您有两种选择。

1)在渲染之前设置列宽。在渲染网格之前,请遍历数据对象以获取将在网格中显示的每个元素的最大长度,然后相应地设置columnDefs。要编辑columnDefs,您需要将其设置为变量,而不是常量,然后仅编辑对象数组。请参见How to change value of object which is inside an array using JavaScript or jQuery?。这种方法在计算宽度时会减慢初始渲染的速度。

2)设置渲染后的列宽。渲染网格后,使用gridApi.setColumnWidth()方法。 https://www.ag-grid.com/javascript-grid-column-api/

onGridReady(params) {
  params.columnApi.setColumnWidth('someColumn', someColumnWidth, true);
}

使用这种方法,网格将开始更快地渲染,但是用户可能会看到列宽已调整。

答案 2 :(得分:0)

我不认为您要执行的操作不完全是,但是另一种选择是让文本截断并在鼠标悬停时显示它:

  agGridColumnDef.cellRenderer = function(params) {
    return "<span title='" + params.value + "'>" + params.value + "</span>";
  };