【问题标题】:UI-GRID - Dynamic Row Height - AlternativesUI-GRID - 动态行高 - 备选方案
【发布时间】:2015-08-27 08:37:19
【问题描述】:

我试图让一个单元格动态扩展它的高度。

有没有办法在渲染后调整行(GridRow)的高度?

如果没有,那么我会尝试使用可扩展的网格或网格中的树。

是否可以在特定单元格/列之外显示可扩展的网格?

目前我看到所有可扩展网格/树形网格占据了父级下方的整行。

谢谢

【问题讨论】:

    标签: angular-ui-grid


    【解决方案1】:

    将此CSS添加到您的样式中:

    .ui-grid-viewport .ui-grid-cell-contents {
      word-wrap: break-word;
      white-space: normal !important;
    }
    
    .ui-grid-row, .ui-grid-cell {
      height: auto !important;
    }
    
    .ui-grid-row div[role=row] {
      display: flex ;
      align-content: stretch;
    }
    

    【讨论】:

    • 这是完美的纯 CSS 解决方案。我必须添加div.ui-grid-cell 来否决并使其正常工作。谢谢!
    • 对于 ui-grid - v4.0.2 - 2016-12-30,这使得网格行高是动态的。然而,它提出了另一个挑战:如何动态地将网格的高度更改为其行的总和。我已经为双线设置了网格行高。现在很多行都是单行,在网格分页控件出现之前底部有一大块空白。
    • 对于 ui-grid - v4.0.2 - 2016-12-30,我发现了另一个挑战:如果启用行选择,它对最左侧复选框列的高度没有影响。复选框单元格的高度与行的其余部分不匹配,很快就会变得错位且无用。
    • 这在使用固定列时无法按预期工作,因为这些列不在同一个容器中。
    【解决方案2】:

    您可以在此处查看同一问题的答案:https://github.com/angular-ui/ng-grid/issues/3239#issuecomment-91045267

    UI-Grid 将行虚拟化,这意味着它只呈现数据的一小部分,而不会呈现所有不在视图中的数据。这意味着网格需要知道每行的高度,以便计算定位。

    如果它必须在渲染时测量每一行,这将导致浏览器一遍又一遍地重新绘制,性能会很糟糕。

    您会发现其他虚拟化工具(如 Ionic 的 collection-repeat)也有同样的限制。

    更新

    回答你的第二个问题:你可以在 GridRow 对象上设置一个height 属性(不是你的实体,你可以使用网格 API 中的getRow 来获取 GridRow 对象),当渲染行。

    您的第三个问题:不,可扩展仅用于处理整行。可以根据某些单元格中的点击来更改子网格中显示的数据类型,但这需要对可扩展代码进行一些更改。

    【讨论】:

    • 我尝试在行上设置高度,但没有任何反应。然后我尝试设置 grid.queueGridRefresh() 之后,高度保持不变。这个答案似乎缺少一些东西来使解决方案起作用。
    • @matt 你能用 plunker 复制吗?
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 2017-12-11
    • 2019-08-11
    • 2013-04-30
    相关资源
    最近更新 更多