【问题标题】:How to limit the size of the AdvancedDataGrid to its rows with variable row heights如何将 AdvancedDataGrid 的大小限制为具有可变行高的行
【发布时间】:2011-08-24 06:32:11
【问题描述】:

我尝试将 AdvancedDataGrid 的大小限制为行。目前我使用 variableRowHeight 为 true 并在运行时设置 itemRenderer 的高度。

因此每一行都有不同的高度。但是我发现Grid的高度计算背后的逻辑很简单——测量第一行的高度,然后乘以行数。 如有错误请指正

我对这个问题做了一些 POC,发现在 calculateRowHeight 事件期间 -> 它计算了单个行的高度,但它只是将 rowCount 与第一行的高度相乘。相反,它应该计算每一行并总结高度。

请提出解决方法。

PS:我尝试了以下选项: 1. rowCount = arrayCollection.length 2. dataGrid.height = dataGrid.measureHeightOfItems(0, arrayCollection.length)+ dataGrid.headerHeight

【问题讨论】:

    标签: apache-flex actionscript advanceddatagrid


    【解决方案1】:

    您可以做的最好的事情是指定数据网格的高度和其中每一行的高度。整个可变高度的事情并不一致。

    【讨论】:

    • 这不是一个选项,根据要求我不能设置固定的行高,它必须不同。有些行包含一些图形,而有些行只包含一些文本。
    【解决方案2】:

    如果你发现问题出在这个特定的方法里面,也许你可以尝试扩展 AdvancedDataGrid 并重写 calculateRowHeight 方法来做这个求和。

    public class MyAdvancedDatagrid extends AdvancedDataGrid {
    
        override protected function calculateRowHeight(data:Object, hh:Number, skipVisible:Boolean = false):Number {
         //Your code here
        }
    
    }
    

    【讨论】:

    • 这里计算单个行高,但是这里我不能设置数据网格的高度。此外,在 AdvancedDataGrid 内的 measure 方法之前调用此覆盖方法。
    • 经过进一步调查,我发现如果将 dataGrid 高度设置为较小的值,则仅计算可见行。
    【解决方案3】:

    高级数据网格采用与 flex 中所有列表相同的回收方法。它只为屏幕上的可视数据创建项目渲染器。发现不可见的每一行都没有为其创建项目渲染器,因此项目渲染器无法测量和报告网格的高度,因此您无法获得可变行高设置为的网格的确切高度真实且比屏幕上显示的数据更多。

    如果您想准确测量网格需要多少高度,请为数据提供程序中的每一行创建一个项目渲染器,对其进行验证和测量。

    【讨论】:

    • "每行的项目渲染器" 据我所知,项目渲染器设置在列上。您能否让我知道我应该在哪个事件上测量项目渲染器的高度。以及如何总结所有项目渲染器的高度?
    【解决方案4】:

    扩展AdvancedDataGrid的measure overriden方法可以使用以下代码:

    override protected function measure():void
    {
        super.measure();
        if(this.dataProvider != null && this.dataProvider.length > 0)
        {
            this.measuredHeight = this.measureHeightOfItems(0, dataProvider.length);
        }
    }
    

    这将计算所有行的高度,并相应地设置数据网格的高度。

    【讨论】:

      猜你喜欢
      • 2013-05-26
      • 2011-04-13
      • 2011-10-09
      • 2012-07-17
      • 2011-09-28
      • 2014-11-27
      • 2018-12-30
      • 2016-10-15
      • 1970-01-01
      相关资源
      最近更新 更多