2010-09-25 2 views
1

Я хочу создать список индикаторов выполнения и соответственно обновить список. У меня есть данные группы в массиве, какОтображение списка индикаторов ошибок при использовании itemrenderer

<mx:Array id="arr"> 
     <mx:Object label="Group One" min="0" max="200" currentValue="60" /> 
     <mx:Object label="Group Two" min="0" max="300" currentValue="50" /> 
</mx:Array> 

Значения в объекте массива указывают на имя группы, минимум, максимум и текущее значение для группы (для использования в ProgressBar).

Я использовал список с «mx.controls.ProgressBar», как ItemRenderer в

<mx:List width="100%" dataProvider="{arr}" 
     itemRenderer="mx.controls.ProgressBar"/> 

Теперь то, что мне нужно, когда CurrentValue поле массива «обр» изменения я хочу обновить прогрессбар "прогресс "значение CurrentValue (где минимальное и максимальное значение ProgressBar сохраняются в массиве„обр“)

Как я могу сделать то же самое.

Спасибо всем

ответ

0

привет всем
спасибо за ответы ..
После прибегая к помощи Чет больше я нашел что-то похожее на то, что мне нужно здесь
http://www.flex-blog.com/progressbar-in-datagrid-example/

Довольно похоже на 2 ответов выше .. по @kubarium и @alxx ..
1. Используйте ItemRenderer, чтобы показать ProgressBar внутри DataGrid.
2. Создайте DataProvider для DataGrid.
3. Создайте действие, чтобы запустить ProgressBar
4. Убедитесь, что ArrayCollection обновлен при каждом прогрессе в ProgressBar.

1

Я предполагаю, что ваши индикаторы выполнения не показывая ничего, потому что все это неправильно. Item renderer - это класс, который получает один элемент от поставщика данных через function set data(value:Object):void. Чтобы получить значения внутри ProgressBar, вы можете подклассифицировать его, добавить функцию данных (getter и setter) и установить свойства оттуда - этот класс будет рендерингом элемента.

Дальше, itemRenderers не гарантируется, что оно будет создано в любое время. Список создает их так, как они должны отображаться, и сохраняет их в пуле. Это означает, что вы не можете поговорить с конкретным элементом списка - любой элемент из пула может сыграть свою роль (получение его данных). Чтобы изменить ход выполнения, вам необходимо обновить поставщика данных и снова установить его.

1

Хитрость заключается в том, чтобы установить режим работы с прогрессивной панелью в ручную, поскольку вы не автоматически прослушиваете какой-либо прогресс загруженных данных. Вы хотите установить значение, чтобы индикатор выполнения мог обновить себя, поэтому ручной путь. Кроме того, проверить это:

<s:Application minHeight="600" minWidth="955" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"> 
<s:layout> 
    <s:HorizontalLayout/> 
</s:layout> 
<fx:Declarations> 
    <s:ArrayCollection id="arr"> 
     <fx:Object label="Group One" currentValue="20" max="200" min="0"/> 
     <fx:Object label="Group Two" currentValue="50" max="300" min="0"/> 
    </s:ArrayCollection> 
</fx:Declarations> 
<fx:Script> 
    <![CDATA[ 
     private function updateArr():void { 
      arr.getItemAt(0).currentValue = ns.value; 
     } 
    ]]> 
</fx:Script> 
<s:List dataProvider="{arr}" itemRenderer="ProgressBarWithCurrentValue"/> 
<s:NumericStepper id="ns" maximum="200" minimum="0" stepSize="10" value="20" change="updateArr()"/></s:Application> 

Вот код ItemRenderer, вы увидите режим как руководство:

<s:ItemRenderer autoDrawBackground="true" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"> 
<fx:Script> 
    <![CDATA[ 
     private function updateCurrentValue():void { 
      pb.setProgress(data.currentValue, data.max); 
     } 
    ]]> 
</fx:Script> 
<mx:ProgressBar id="pb" maximum="{data.max}" minimum="{data.min}" mode="manual" updateComplete="updateCurrentValue()"/></s:ItemRenderer> 

Когда вы просто установите ItemRenderer к ProgressBar, он автоматически пытается найти datasource, но в вашем случае вы будете кормить и обновлять себя. Таким образом, вам понадобится itemrenderer, где вы можете сделать некоторые операции.

+0

Er, вопрос помечен flex-3, и те s: и fx: ... – alxx

+0

Я могу изменить s в пространство имен mx и взять коллекцию в блок сценариев mx, но он все равно будет работать. Тем не менее, если это не соответствует тегу, я сожалею об этом. –

Смежные вопросы