Сетка данных Flex / AIR обращается к определенной строке - PullRequest
0 голосов
/ 09 апреля 2011

Я застрял в проблеме при работе с сеткой данных Flex в приложении AIR.

Как получить доступ к определенной строке в сетке данных во Flex.Обратите внимание, что я не говорю о выбранном элементе или какой-либо конкретной записи dataProvider of datagrid.

Что именно я хочу сделать, так это показать некоторые данные файлов (имя, описание и т. Д.) В сетке данных, и данные этих файлов поступают из массива, который является dataProvider этой сетки данных.

Теперь, когда эти файлы загружаются один за другим на сервер (с помощью веб-службы), я хочу показать ProgressBar, скажем, в столбце «Progress» в сетке данных.Как получить доступ к этому столбцу для конкретной строки в сетке данных, т.е. для текущего загружаемого файла.

Пожалуйста, обратитесь к изображению, чтобы лучше понять мой запрос. enter image description here

Пожалуйста, укажите мне.

Спасибо

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

Предисловие, я использую Swiz Framework, поэтому вам просто нужно будет адаптировать то, что я говорю, к 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

В этом поместье все строки будут реагировать на данное событие и отображать индикатор выполнения ТОЛЬКО, если имя файла совпадает с именем загружаемого файла. Если имя файла не является уникальным (я думаю, что это будет), вам понадобится какой-то уникальный идентификатор.

Тот же самый общий процесс будет сделан с прогрессом статуса. Просто запустите другое событие FILE_UPLOAD_STATUS_UPDATE с процентом и именем файла. Затем обработайте событие правильно.

0 голосов
/ 10 апреля 2011

Самый простой способ удовлетворить ваши потребности - создать пользовательский рендерер элементов с индикатором выполнения для столбца прогресса и добавить 3 дополнительных поля к данным файла (элемент вашего поставщика данных):

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

Индикатор выполнения в средстве визуализации элементов может использовать привязку данных для переключения видимости в зависимости от значения флага inProgress. И вы можете обновить прогресс, используя ту же привязку данных со значениями bytesLoaded и bytesTotal.

Подробнее о средствах визуализации пользовательских элементов можно прочитать в официальной документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...