2009-06-29 77 views
0

嗨,flex datagrid - 項目渲染器和跳過行

我有一個6列,每個都有自己的項目渲染器的數據網格。在第一列中,我希望能夠做一個檢查,看看列是否包含一些有效的數據,如果沒有,那麼我想跳過這一行,並轉到下一個。換句話說,我想要一種方法來告訴我的數據網格停止處理當前數據對象的其餘項目渲染器,並跳到下一個。有任何想法嗎?

回答

1

我想說你最好的選擇是在ListCollectionView對象(如ArrayCollection)上使用filterFunction屬性。這樣可以在DataGrid顯示在網格中之前過濾掉不希望顯示的對象,並且應該避免完全處理任何itemRenderer。

0

如果您仍然希望「跳過」對象顯示在數據網格中,並且只需更改項目渲染器對其的響應,那麼您需要在渲染器中編寫代碼。

在項目渲染器內部,您可以訪問以前列的數據值。您應該檢查項目渲染器中可用的listData屬性,並使用您的發現來配置項目渲染器應顯示的方式。

您可以找到有關的listData這裏的信息:如果您想更具體的幫助編寫的項目中的代碼

var dgListData:DataGridListData = DataGridListData(listData); 

// Process all columns before the current one. 
for (var i:int = 0; i < dgListData.columnIndex; i++) 
{ 
    // Do something here to examine previous data 

    // If we should stop processing based on previous values 
    // then hide everything inside of this renderer (perhaps 
    // move to a state name 'empty' that has no children), else 
    // move to the state that renders something. 
    currentState = shouldSkipObject ? 'empty' : 'normal'; 
} 

http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridListData.html

要檢查以前的值,你可能會喜歡這個代碼的東西渲染器中,請包含數據網格內的數據樣本示例以及項目渲染器實際應該執行的操作的描述。