让Flex DataGrid自适应高度

为了节约版面,有时Flex DataGrid自适应高度。如果是MX DataGrid,动态设定rowCount的值就行了;对于Spark DataGrid,动态设定requestedRowCount的值就能搞定。MX DataGrid最少会保留一行数据,如果rowCount为0就会变成初始化值。这种情况下,我们可以通过设定height等于headerHeight来自适应高度,看下面代码:

protected function onValueCommit():void
{
  if( dataProvider.length > 0)
  {
    rowCount = dataProvider.length;
    enabled = true;
  }
  else
  {
    height = headerHeight 
      + (getStyle("borderVisible") ? 1 : 0);
    enabled = false;
  }
}

为MX DataGrid添加上述valueCommit事件处理函数即可。
Spark DataGrid默认就能自适应高度,只不过最少会保留两行数据,这种情况下,我们可以通过rowHeight与columnHeaderGroup的高度来计算DataGrid的高度,看下面代码:

protected function onChange():void
{
  if(dataProvider.length < 3) 
  {
    height = rowHeight * dataProvider.length 
      + columnHeaderGroup.height 
      +  (getStyle("borderVisible") ? 3 : 0)
  }
}

为Spark DataGrid添加上述caretChange事件处理函数即可。

发表评论