Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Датагрид и вставленная в неё кнопка (http://www.flasher.ru/forum/showthread.php?t=137943)

BeDLiNt 29.03.2010 11:27

Цитата:

Сообщение от lighto (Сообщение 896464)
:rolleyes:блин некогда неработал с этими dispatch очень прошу пример или ссылку на него

Ну дык работайте, справку читайте. Как можно работать с Флекс и не использовать его главные фишки: события(к фишке скорее относятся именно всплывающие) и биндинг.

lighto 29.03.2010 15:29

Цитата:

Сообщение от Кип (Сообщение 896466)
Выносишь itemRenderer в отдельный файл, вешаешь в нём обработчик MouseEvent.CLICK, в обработчике пишешь:
Код AS3:

dispatchEvent(new Event("itemRendererClicked", true));

В основном классе на датагрид вешаешь addEventListender("itemRendererClicked", твояФункция)

Вродеб работает но я наверное что то нетак делаю((( потому что работает вне зависимости от того нажата ли кнопка или нет(
это itemRenderer и диспатч мне кажеться я тут что то нето сделал да?:rolleyes:
Код AS3:

<mx:itemRenderer>
        <mx:Component>
              <mx:Button label="скачать" click="
                dispatchEvent(new Event('itemRendererClicked',true));
                                                            "/>
        </mx:Component>
</mx:itemRenderer>

это функция с листенером
Код AS3:

 public function Dow():void
            {
                DG.addEventListener('itemRendererClicked',Downlo(),false, 1);
            }

1)да и на что вешать её? на клик по датегрид тогда невозможно работать с датагридом...???
2)а выполняеться она почему то вне зависимости от того кликнули ли кнопку или нет... может кто подскажет как бороться с этим...
P.S блин насколько было бы проше еслибы функции были видны из всех файлов :)

BeDLiNt 29.03.2010 15:44

Цитата:

это функция с листенером
Это не функция с листенером, это вы посписываетесь на событие 'itemRendererClicked'. Подписаться на него надо заранее, допустим по creationComplete.

lighto 29.03.2010 15:53

спасибо за пояснение, если вешаешь на creationComplete, тогда он как будто невидит что я подписался на событие или я как то не так подписался? кликаешь на кнопку и нечего непроисходит....

BeDLiNt 29.03.2010 15:58

Покажи код.

lighto 29.03.2010 16:06

Дата грид и итемрендер
Код AS3:

<mx:DataGrid left="10" top="41" right="10" bottom="10" dataProvider="{bookz}" id="DG" change="ShowImage();" creationComplete="Dow()" >
<mx:columns>
<mx:DataGridColumn headerText="Код" width="30"  dataField="id"/>
<mx:DataGridColumn headerText="Название книги" width="300" dataField="name"/>
<mx:DataGridColumn headerText="Автор/Под редакцией" width="150" dataField="avtor"/>
<mx:DataGridColumn headerText="Год издания" width="70" dataField="god"/>
<mx:DataGridColumn headerText="Место издания" width="70" dataField="mestoizd_name"/>
<mx:DataGridColumn headerText="Скачать" width="50" id="date111">
<mx:itemRenderer>
<mx:Component>
<mx:Button label="скачать" click="dispatchEvent(new Event('itemRendererClicked',true));"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>

Код AS3:

public function Dow():void
{
DG.addEventListener('itemRendererClicked',Downlo(),false, 1);
} 
 
function Downlo()
{
if (DG.selectedIndex==-1)
{
Alert.show('Выберите из списка книгу, которую Вы хотите загрузить');       
return;
}       
init(progBar,btn1);
CheckFileInInternet();
}

он не видит подписи на событие так?

BeDLiNt 29.03.2010 16:18

Попробуй так:
Код AS3:

<mx:Button id="loadButton" label="скачать" click="loadButton.dispatchEvent(new Event('itemRendererClicked',true));"/>


lighto 29.03.2010 16:21

id attribute is not allowed on the root tag of a component
вот такая вот ошибка выходит :umnik2: я это уже пробовал блин это что то непонятное..
ему нельзя присвоить айди а по умолчанию у него какой айди должен же какой нить быть? или может вообше все неправильно?

BeDLiNt 29.03.2010 16:38

Всё работает. Вот накидал пример:
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
                minWidth="955" minHeight="600">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.FlexEvent;
 
            protected function dg_creationCompleteHandler(event:FlexEvent):void
            {
                dg.addEventListener("loadClickEvent", loadClickHandler);
            }
 
            protected function loadClickHandler(event:Event):void
            {
                mx.controls.Alert.show("Load Click!");
            }
        ]]>
    </mx:Script>
 
    <mx:XMLList id="employees">
        <employee>
            <name>Christina Coenraets</name>
            <phone>555-219-2270</phone>
            <email>ccoenraets@fictitious.com</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Joanne Wall</name>
            <phone>555-219-2012</phone>
            <email>jwall@fictitious.com</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Maurice Smith</name>
            <phone>555-219-2012</phone>
            <email>maurice@fictitious.com</email>
            <active>false</active>
        </employee>
        <employee>
            <name>Mary Jones</name>
            <phone>555-219-2000</phone>
            <email>mjones@fictitious.com</email>
            <active>true</active>
        </employee>
    </mx:XMLList>
 
    <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5"
                dataProvider="{employees}"
                creationComplete="dg_creationCompleteHandler(event)">
        <mx:columns>
            <mx:DataGridColumn dataField="name" headerText="Name" />
            <mx:DataGridColumn dataField="phone" headerText="Phone" />
            <mx:DataGridColumn dataField="email" headerText="Email" />
            <mx:DataGridColumn>
                <mx:itemRenderer>
                    <mx:Component>
                        <mx:Button label="load"
                                  click="{dispatchEvent(new Event('loadClickEvent', true))}" />
                    </mx:Component>
                </mx:itemRenderer>
            </mx:DataGridColumn>
        </mx:columns>
    </mx:DataGrid>
 
</mx:Application>


lighto 29.03.2010 17:01

BeDLiNt ОГРОМНОЕ СПАСИБО ... все дело то в скобках (event:Event) вот блин а сам бы некогда неподумал что там все это))) спасибо)


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

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