2011-04-08 25 views
0

我被困在Flex應用程序中的Flex數據網格上工作的問題中。flex/AIR datagrid訪問特定行

如何在Flex中訪問datagrid中的特定行。請注意,我不是在討論selectedItem或DataGrid的dataProvider的任何特定記錄。

我到底想做什麼是我在數據網格上顯示一些文件數據(名稱,描述等),這些文件的數據來自數據庫的dataProvider數組。

現在,當這些文件逐一上傳到服務器(使用webservice)時,我想在數據網格上顯示一個ProgressBar,例如「Progress」列。如何訪問數據網格中特定行的此列即當前正在上傳的文件。

請參考圖片以更好地瞭解我的查詢。 enter image description here

請指導我。

感謝

回答

1

前言中,我使用Swiz框架,所以你就只能去適應什麼,我說給本地的Flex或其他framewok。

我會通過在開始上傳時觸發一個事件來解決這個問題。此事件將具有一個屬性,表示正在上傳哪個文件名。

var e:DataGridEvent = new DataGridEvent(DataGridEvent.START_FILE_UPLOAD); 
e.fileName = uploadFileName; 
dispatcher.dispatch(e); 

DataGrid中的每一行都是一個的itemRenderer的一個新實例(沒有其他辦法讓它有一個進度條或任何幻想)。因此,在將itemRenderer設置爲MXML組件之後,只需讓它監視正在分派的事件。

[EventHandler(event="DataGridEvent.START_FILE_UPLOAD", properties="fileName")] 
public function startFileUpload(fileName:String):void 
{ 
    if(fileName == dataGride.fileName) 
     ........//Show progress bar or whatever 

在這個莊園,所有的行會爲給定的事件做出響應,並顯示進度條,只有當它具有相同的文件名作爲文件被上傳。如果文件名不是唯一的(我認爲它會是),你將不得不擁有某種唯一的ID。

與狀態進度相同的一般過程將完成。只需使用百分比和文件名引發另一個事件爲FILE_UPLOAD_STATUS_UPDATE。然後正確處理事件。

+0

感謝您的詳細回覆..我沒有料到這樣的複雜,但...無論如何,我一定會檢查出來... – Prashant 2011-04-09 05:36:50

0

,以滿足您的需求,最簡單的方法是創建自定義項目渲染與進度條的進度欄,並添加3個附加字段文件數據(數據提供者的元素):

  1. public var inProgress:Boolean
  2. public var bytesLoaded:int
  3. public var bytesTotal:int

在項呈示進度條可以使用數據用於切換的可見性結合取決於inProgress標誌值。您可以使用與bytesLoadedbytesTotal值相同的數據綁定來更新進度。

您可以在official documentation中閱讀更多關於自定義項目渲染器的信息。