Как получить значение Itemrenderer - PullRequest
0 голосов
/ 16 сентября 2011

Я хочу получить значение checkbox от itemrenderer.У меня есть таблица данных с checkBox в качестве itemrenderer следующим образом:

<s:DataGrid id="myGrid" dataProvider="{module_DP}" rowHeight="35" fontSize="9"  
                    x="20" y="20" width="184" height="306">
            <s:columns>
                <s:ArrayList>                     
                    <s:GridColumn headerText="Access" dataField="access">
                        <s:itemRenderer>
                            <fx:Component>
                                <s:GridItemRenderer>
                                    <s:CheckBox label="" click="Check_Click(event)" selected="@{data.access}" horizontalCenter="0"/>
                                </s:GridItemRenderer>
                            </fx:Component>
                        </s:itemRenderer>
                    </s:GridColumn>
                </s:ArrayList>
            </s:columns>
        </s:DataGrid>

Метод Check_Click ():

public function Check_Click():void{
trace(I want to get the value of clicked checkbox..in this case "access")
}

Я не могу понять код, который мне нужно вставить в трассировку.Может кто-нибудь посоветовать?

1 Ответ

0 голосов
/ 17 сентября 2011

Вы можете попробовать:

<s:CheckBox label="" click="Check_Click(event)" selected="@{data.access}" horizontalCenter="0"/>


public function Check_Click(event:MouseEvent):void{
   var cb:Checkbox = event.target as CheckBox
   trace(cb.selected);
}

Заголовок сообщения задавал немного другой вопрос "Как получить ценность Itemrenderer". Получите доступ к свойству данных в рендере, как вы делаете это с {data.access}.

Для доступа к нему извне:

<fx:Script>
   <![CDATA[
      import mx.events.FlexEvent;

      import spark.components.gridClasses.IGridItemRenderer;
      private function onGridInitialize(event:FlexEvent):void
      {
         this.addEventListener('moduleItemChange', onModuleItemChange);
      }
      private function onModuleItemChange(event:Event):void
      {
         var item:IGridItemRenderer = event.target as IGridItemRenderer;
         if(!item || !item.data) { /* deal with this */ } 
         trace(item.data.access);            
      }
   ]]>
</fx:Script>
<s:DataGrid id="myGrid" rowHeight="35" fontSize="9"  
         x="20" y="20" width="184" height="306" 
         initialize="onGridInitialize(event)">
   <s:dataProvider>
      <s:ArrayList>         
         <fx:Object   access="true"/>
         <fx:Object   access="false"/>
         <fx:Object   access="false"/>
         <fx:Object   access="true"/>
         <fx:Object   access="true"/>               
      </s:ArrayList>
   </s:dataProvider>
   <s:columns>
      <s:ArrayList>                     
         <s:GridColumn headerText="Access" dataField="access">
            <s:itemRenderer>
               <fx:Component>
                  <s:GridItemRenderer>
                     <fx:Script>
                        <![CDATA[
                           private function Check_Click(even:MouseEvent):void
                           {
                              dispatchEvent(new Event('moduleItemChange', true));
                           }                           
                        ]]>
                     </fx:Script>
                     <s:CheckBox label="" click="Check_Click(event)" selected="@{data.access}" horizontalCenter="0"/>
                  </s:GridItemRenderer>
               </fx:Component>
            </s:itemRenderer>
         </s:GridColumn>
      </s:ArrayList>
   </s:columns>
</s:DataGrid>
...