Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   2 значение в 1 колонку datagrid (http://www.flasher.ru/forum/showthread.php?t=132047)

lighto 03.11.2009 10:30

2 значение в 1 колонку datagrid
 
Здраствуйте. ПОдскажите как засунуть 2 значение в 1 колонку datagrid?
Есть вот такая датагрид а нужно значения Дом и Офис засунуть в колонку street такое возможно?
Код AS3:

<mx:DataGrid top="10" bottom="37" left="10" right="10" id="DataGrid1"
horizontalScrollPolicy="on" dataProvider="{firm}" itemClick="Plusmarker(event); Ifhave();"
themeColor="#009DFF" >
<mx:columns>
<mx:DataGridColumn headerText="Код" visible="false"  dataField="subdiv_id"/>
<mx:DataGridColumn headerText="Код услуги" visible="false"  dataField="class_id"/>
<mx:DataGridColumn headerText="Город" visible="false"  dataField="town"/>
<mx:DataGridColumn headerText="Название фирмы" width="200" dataField="firm_name"/>
<mx:DataGridColumn headerText="Вид деятельности" width="200" dataField="class"/>
<mx:DataGridColumn id="street" headerText="Улица" width="100" dataField="street"/>
<mx:DataGridColumn id="buld" visible="false" headerText="Дом" width="100" dataField="building"/>
<mx:DataGridColumn id="ofis" visible="false" headerText="Офис" width="100" dataField="office"/>
<mx:DataGridColumn headerText="Телефон" width="100" dataField="phone"/>
 
</mx:columns>

Спасибо).

BeDLiNt 03.11.2009 10:53

Код AS3:

private function LabelFunction(item:Object, column:DataGridColumn):String
{
        return item.office + " " + item.building;
}


yorlin 03.11.2009 10:54

На сервере лепить из двух переменных одну и посылать в приложение как Улица.

lighto 03.11.2009 11:56

Цитата:

Сообщение от BeDLiNt (Сообщение 863020)
Код AS3:

private function LabelFunction(item:Object, column:DataGridColumn):String
{
        return item.office + " " + item.building;
}


Это не работает(.

Добавлено через 1 минуту
а это вообше лишний труд и заморочки
Цитата:

Сообщение от yorlin (Сообщение 863022)
На сервере лепить из двух переменных одну и посылать в приложение как Улица.


yorlin 03.11.2009 12:27

Лишний труд - это то, что ты придумал.
Написать $street = $house + $office и передать в гриду намного проще, да и правильней чем это делать на клиенте...

lighto 03.11.2009 14:57

Я не хочу использовать ПХП мне нужно обойтись средствами AS3 и flex

Gubber 03.11.2009 15:48

В таком случае надо создать свой рендерер, который отображает у тебя для данной колонки всё что тебе надо. ;)

lighto 03.11.2009 15:51

А можно примерчик легинький для толчка?

BeDLiNt 03.11.2009 15:53

Всё работает:
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
                                creationComplete="application1_creationCompleteHandler(event)">
        <mx:Script>
                <![CDATA[
                        import mx.events.FlexEvent;
                        import mx.collections.ArrayCollection;
 
                        [Bindable]
                        private var firm:ArrayCollection = new ArrayCollection();
 
                        protected function application1_creationCompleteHandler(event:FlexEvent):void
                        {
                                var obj1:Object = new Object();
                                obj1.office = 'Офис1';
                                obj1.building = 'Дом1';
                                firm.addItem(obj1);
 
                                var obj2:Object = new Object();
                                obj2.office = 'Офис2';
                                obj2.building = 'Дом2';
                                firm.addItem(obj2);
                        }
 
                        private function streetLabelFunction(item:Object, column:DataGridColumn):String
                        {
                                return item.office + " и " + item.building;
                        }
                ]]>
        </mx:Script>
 
        <mx:DataGrid dataProvider="{firm}">
                <mx:columns>
                        <mx:DataGridColumn headerText="Улица" labelFunction="streetLabelFunction"/>
                </mx:columns>
        </mx:DataGrid>
</mx:Application>


Gubber 03.11.2009 16:12

Код AS3:

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
        paddingLeft="0" paddingRight="0">
        <mx:Script>
                <![CDATA[
 
        override public function set data(value:Object):void {
            super.data = value;
            cityL.text = (data as User).city;
            addressL.text=(data as User).addres;
 
        }
        ]]>
        </mx:Script>
<mx:Label id="cityL" width="100%" />
<mx:Label id="addressL" width="100%" />
</mx:VBox>

Вот пример рендерера с двумя Label-компонентами.
P.S. писал всё ручками, по этому могут быть ошибки, но работать будет.


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

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