flex / AIR datagrid访问特定行

时间:2011-04-08 20:16:10

标签: flex datagrid

我遇到了在AIR应用程序中处理Flex数据网格的问题。

如何在Flex中访问datagrid中的特定行。请注意,我不是在谈论selectedItem或datagrid的dataProvider的任何特定记录。

我想要做的是在数据网格上显示一些文件数据(名称,描述等),这些文件的数据来自一个数组,它是datagrid的dataProvider。

现在,当这些文件逐个上传到服务器时(使用webservice),我想在数据网格中的“进度”列上显示一个ProgressBar。如何访问datagrid中特定行的此列,即当前正在上载的文件。

请参阅图片以更好地理解我的查询。enter image description here

请指导我。

由于

2 个答案:

答案 0 :(得分:1)

前言,我使用的是Swiz框架,因此您只需要调整我对Native Flex或其他框架的说法。

我会通过在您开始上传时触发的事件来攻击此事。此事件将具有一个属性,表示正在上载哪个文件名。

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

在此庄园中,所有行都将响应给定事件,并且仅在与正在上载的文件具有相同文件名时显示进度条。如果filename不是唯一的(我认为它是),你将必须拥有某种唯一的ID。

将对状态进度执行相同的一般过程。只需使用百分比和文件名触发另一个FILE_UPLOAD_STATUS_UPDATE事件即可。然后正确处理事件。

答案 1 :(得分:0)

满足您需求的最简单方法是创建带有进度栏进度条的自定义项目渲染器,并为文件数据(数据提供者的一个元素)添加3个附加字段:

  1. public var inProgress:Boolean
  2. public var bytesLoaded:int
  3. public var bytesTotal:int
  4. 项呈示器中的进度条可以使用数据绑定来切换可见性,具体取决于inProgress标志值。您可以使用与bytesLoadedbytesTotal值相同的数据绑定来更新进度。

    您可以在official documentation中了解有关自定义项呈示器的详情。