为了节约版面,有时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事件处理函数即可。