2010-08-09 83 views
2

什麼是選擇數據網格中所有項目的最佳方法。Flex:datagrid選擇所有項目

我正在考慮做一個for循環,然後選擇每個項目,但有沒有更好的方法來實現這一目標?

回答

5

你正在使用什麼類型的dataProvider?

如果你有一個數組,你可以這樣做:

dataGrid.selectedItems = dataGrid.dataProvider; 

如果你有一個ArrayCollection你可以這樣做:

dataGrid.selectedItems = dataGrid.dataProvider.source; 

對於XML,你可能不得不循環。

上selectedItems屬性更多信息:

http://livedocs.adobe.com/flex/3/langref/mx/controls/listClasses/ListBase.html#selectedItems

+0

@Adnan @ Reboog711如果你有照顧關於數據類型,你可能是錯誤的。 'selectedItems'代表數據'dataProvider'的一個子集。設置它聽起來很容易出錯。改變'selectedIndices'更安全和優雅。 – Destroyica 2013-11-09 15:15:43

+0

@Destroyica我不認爲我理解你的評論。在Flex MX列表中; dataProvider是一個通用對象;所以對它的任何操作都需要知道類型。 selectedItems屬性必須包含dataProvider的元素。更改selectedIndices需要一個循環 - 正如原始問題中提到的那樣 - 但我認爲這會使代碼不那麼優雅。我不明白如何使用selectedIndices使代碼比訪問selectedItem更安全(或更少)。 – JeffryHouser 2013-11-09 17:44:29

+0

我的觀點是操縱索引讓組件處理數據。通過設置'selectedItems',您可以將數據發送到可能(完全)與'dataProvider'不同的組件。我非常確定,當你設置'selectedItems'時,組件必須檢查這兩個集合之間的一致性 - 但是它在ActionScript中非常方便。 – Destroyica 2013-11-09 20:46:28

2

我還將添加這個問題的互補。 要取消選擇一個DataGrid的所有項目,答案是不

dataGrid.selectedItems = null; 

但我們會

dataGrid.selectedItems = new Array; 

首先將引發NullPointerException異常。

+0

Thanx增加@Zenklys – Adnan 2011-06-29 08:40:37

4

您好我也嘗試了所有這些與mx.dataGrid但不工作, 在這裏,我喜歡的好辦法

var indexArr:Array = []; 
for(var i:uint= 0; i<dataGrid.dataProvider.length;i++) 
{ 

    indexArr.push(i);  

} 
dataGrid.selectedIndices= indexArr; 

這對我的作品

+0

乾淨的方式來管理索引,而不是數據提供者。謝謝。 – Destroyica 2013-11-09 15:10:55