FlexのDataGrid.rowCountのバグ
Flex3.2のDataGrid.rowCountのASDocには次の記載があります。
DataGrid コントロールの場合、rowCount プロパティにはヘッダ行が含まれます。 したがって、本文が 3 行とヘッダ行が 1 行含まれる DataGrid コントロールの場合、rowCount プロパティは 4 になります。
今回、下記のようなコードを書いて5行のデータを表示しようとrowCountにデータ件数+1(ヘッダ行数)としたところ、データグリッドにはヘッダを含めて7行表示されてしまいました。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; private function init():void { var dataList:ArrayCollection = new ArrayCollection(); var rowName:String = ""; for (var i:int=0; i < 5; i++) { rowName = (i+1).toString(); dataList.addItem( {data1:rowName} ); } dataGrid.dataProvider = dataList; dataGrid.rowCount = dataList.length + 1; } ]]> </mx:Script> <mx:DataGrid id="dataGrid"> <mx:columns> <mx:DataGridColumn dataField="data1"/> </mx:columns> </mx:DataGrid> </mx:Application>
ASDocの通りであれば、ここはヘッダを含めて6行表示されるのが正しいのです。DataGrid仲間のAdvancedDataGridでは、ASDocの通りにrowCountはデータ件数+ヘッダ行数で認識しているので、これはDataGridのバグっぽいと思い調べてみたところ、Flex SDKのJIRAにhttp://bugs.adobe.com/jira/browse/SDK-25886として登録されていました。
これを見ると、どうやらロジックの修正ではなくASDocの修正とするようです。実際に修正されたコメントは以下のようになっていました。
For a DataGrid control, the rowCount property does not include the header row.
つまり、DataGridのrowCountにはヘッダ行数は含まない、ということになるようです。ただドキュメントの修正となると、AdvancedDataGridとの仕様の一貫性が保たれないのではと思うのですがどうなんでしょう?