Условное изменение значков в строках таблицы данных с помощью щелчка по элементу

Мне нужно разработать сетку данных, в первом столбце я должен использовать значок закрытого замка. когда я щелкаю строку в сетке данных, значок выбранных строк должен измениться на значок открытого замка. как я могу выполнить эту задачу в гибком 3. пожалуйста, помогите мне.


person Santhosh Nayak    schedule 23.07.2011    source источник
comment
Я понятия не имел, как менять значки, щелкая элементы сетки данных. Но я получил ответ на свой вопрос, используя метод набора данных в рендерере элементов. :)   -  person Santhosh Nayak    schedule 25.07.2011
comment
Тогда обязательно ответьте на свой вопрос и выберите его в качестве ответа.   -  person JeffryHouser    schedule 25.07.2011
comment
Я опубликовал официальный ответ, в котором подробно описаны два разных способа обновления средства визуализации при изменении данных.   -  person JeffryHouser    schedule 26.07.2011
comment
Спасибо, что ответили .. :)   -  person Santhosh Nayak    schedule 26.07.2011


Ответы (2)


Есть два варианта обновления itemRenderer при изменении данных.

  1. Первый - переопределить метод набора данных; как вы сказали, это работает для вас.
  2. Второй - прослушивание dataChange и выполняйте обновления в этом обработчике событий.
person JeffryHouser    schedule 26.07.2011

это моя кодировка для выполнения вышеуказанной задачи: когда блокировка истинна, изображение блокировки будет отображаться, когда будет отображаться ложное изображение пера. При щелчке по элементу блокировка будет изменена с true на false и наоборот.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
 import mx.collections.ArrayCollection;
[Bindable]public var arc:ArrayCollection=new ArrayCollection([{college:"College0",lock:true,status:"in progress" }
,{college:"College1",lock:true,status:"in progress" }
,{college:"College2",lock:true,status:"in progress" }
,{college:"College3",lock:false,status:"in progress"}
]);
private function changeBookletLockStatus():void
{

    arc[dgBooklet.selectedIndex].lock = (arc[dgBooklet.selectedIndex].lock==false);
    arc.refresh(); 
} 
]]>
</mx:Script>


<mx:DataGrid sortableColumns="false" height="100%" width="100%" id="dgBooklet" dataProvider="{arc}" 
 alternatingItemColors="[0xfffffff, 0xe4e4e4]" itemClick="changeBookletLockStatus()" >
    <mx:columns> 
    <mx:DataGridColumn headerText="Column 1" dataField="college" />

    <mx:DataGridColumn headerText="icon" dataField="lock" width="40">
        <mx:itemRenderer>
        <mx:Component>
            <mx:HBox paddingLeft="2">
               <mx:Script>
                <![CDATA[
                    override public function set data( value:Object ) : void 
                    {
                       super.data = value;
                       img.source=data.lock==true?"assets/lock.png":"assets/pen.png";
                    }
                ]]>
                </mx:Script>
              <mx:Image id="img"  />
              </mx:HBox>
        </mx:Component>
    </mx:itemRenderer>

    </mx:DataGridColumn>
    <mx:DataGridColumn headerText="Status" dataField="status" >
    </mx:DataGridColumn>
    </mx:columns>
</mx:DataGrid>

</mx:Application>
person Santhosh Nayak    schedule 27.07.2011