我有一個自定義數據網格,更像是一個2D列表(如果這是有道理的話)。我正在動態創建列並重新創建dataProvider以適應我的需要。在調試時,我可以看到我創建了列並將它們設置爲dataGrid並創建並設置了dataProvider,但出於某種原因,我能夠看到dataGrid和列而不是數據。Flex數據網格不顯示數據
[Bindable]
private var mockData:ArrayCollection = new ArrayCollection([
{value: "425341*"},
{value: "425341*"},
{value: "425341*"},
{value: "425341*"},
{value: "425341*"},
{value: "425341*"},
{value: "425341*"},
{value: "425341*"},
{value: "425341*"}]);
...
<TwoDimensionalList
width="100%" height="100%"
numColumns="7" numRows="7"
dataField="value"
dataProvider="{mockData}"/>
的代碼從對象的代碼片段只包含了重要的功能,其他一切都不重要(的getter,setter方法,等...)。
在調試過程中,我檢查了函數中的所有變量,以確保它們已分配並且我期待的值。
[片段]
public class TwoDimensionalList extends DataGrid
{
...
/**
* Creates and sets properties of columns
*/
private function createColumns():void
{
var column:DataGridColumn;
var cols:Array = this.columns;
for(var i:uint=0; i < numColumns; i++)
{
column = new DataGridColumn("column"+i.toString());
column.dataField = "column"+i.toString();
cols[i]=column;
}
this.columns = cols;
// go to the current
gotoPage(this._currentPageNum);
}
/**
* Sets the data for the dataprovider based on the
* number of columns, rows, and page number.
*
* @param pageNum the page number of the data to be viewed in the DataGrids.
*/
private function gotoPage(pageNum:uint):void
{
_currentPageNum = pageNum;
var startIndex:uint = (pageNum-1)*numColumns*numRows;
var data:ArrayCollection = new ArrayCollection();
for(var i:uint=0; i < numRows; i++)
{
var obj:Object = new Object();
for(var j:uint=0; j < numColumns; j++)
{
if((i+(j*numRows)+startIndex) < _dataProvider.length)
obj["column"+j.toString()] = String(_dataProvider.getItemAt(i+(j*numRows)+startIndex)["value"]);
}
data.addItem(obj);
}
this.dataProvider = data;
}
}
感謝您的幫助,但這些解決方案都沒有解決它,謝謝雖然 – asawilliams 2010-03-31 21:29:15