Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   custom renderer checkBox (http://www.flasher.ru/forum/showthread.php?t=105237)

Snut 11.12.2007 10:10

custom renderer checkBox
 
Приветствую всех, вообщем есть задача сделать в датагриде колонку с чекбоксами, хмл имеет вид:
Код:

                <user>
                        <url><![CDATA[http://www.snut.ru/projects/customrender/1.jpg]]></url>
                        <name>Snut</name>
                        <selected>true</selected>
                </user>
                <user>
                        <url><![CDATA[http://www.snut.ru/projects/customrender/2.jpg]]></url>
                        <name>Андрей</name>
                        <selected>true</selected>
                </user>
                <user>
                        <url><![CDATA[http://www.snut.ru/projects/customrender/3.jpg]]></url>
                        <name>Юля</name>
                        <selected>false</selected>
                </user>
                <user>
                        <url><![CDATA[http://www.snut.ru/projects/customrender/4.jpg]]></url>
                        <name>Степан</name>
                        <selected>true</selected>
                </user>
                <user>
                        <url><![CDATA[http://www.snut.ru/projects/customrender/5.jpg]]></url>
                        <name>ХЗкто</name>
                        <selected>true</selected>
                </user>

попыток написать custom renderer было много, например:
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalCenter="0" horizontalCenter="0" verticalAlign="middle" horizontalAlign="center">
<mx:Script>
        <![CDATA[
               
        ]]>
</mx:Script>
        <mx:CheckBox id="check" selected="{data.selected}" />
</mx:VBox>

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


UPD! проблема решена, но по-моему несколько криво...
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalCenter="0" horizontalCenter="0" verticalAlign="middle" horizontalAlign="center" creationComplete="init()">
<mx:Script>
        <![CDATA[
                private function init():void
                {
                        var flag:String = data.selected;
                        if(flag == "true")
                        {
                                check.selected = true;
                        }
                        else
                        {
                                check.selected = false;
                        }
                }
        ]]>
</mx:Script>
        <mx:CheckBox id="check"/>
</mx:VBox>

про тип Boolean говорить не надо, яж попробывал:)

UPD! а вот и нет, не решена, при сортировке полей датагрида улетает чекбокс:( вот черт знает как его заставить работать так как хочется. А точнее как надо.

FlexOkeks 11.12.2007 20:30

Цитата:

Сообщение от Snut
хелп уже до дыр затер

В хелпе как раз для DataGrid больше примеров, а мне нужно было для Tree. Хелп я тоже потер, как Аладин лампу :) , но делал отдельным классом, что-то типа:
Код:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
  <mx:Script>
    <![CDATA[
      import mx.core.ClassFactory;
        public function initCellEditor():void {
          myDataGrid.itemRenderer=new ClassFactory(MyItemRenderer);
      }
    ]]>
  </mx:Script>
  <mx:DataGrid id="myDataGrid" variableRowHeight="true"
      initialize="initCellEditor();">
  </mx:DataGrid>
</mx:Application>

MyItemRenderer.as
Код:

package {
        import mx.controls.dataGridClasses.DataGridItemRenderer;
        public class MyItemRenderer extends DataGridItemRenderer {
                public function MyItemRenderer() {
                }
                override public function data(value:Object):void {
                        super.data = value;
                        //тут можно добавить чекбокс
                }
                override public function validateDisplayList():void{
                        super.validateDisplayList();
                        //тут можно обновлять свойства
                }
               
        }
}



Часовой пояс GMT +4, время: 18:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.