Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Удалить элемент при нажатии кнопки в Itemrender компаненте (http://www.flasher.ru/forum/showthread.php?t=106153)

artfabrique 04.01.2008 20:28

Удалить элемент при нажатии кнопки в Itemrender компаненте
 
есть mx:List
ему назначен рендером компанент такого плана:
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="310" height="25" horizontalGap="0" verticalAlign="middle" horizontalAlign="left">
    <mx:Label id="label_text" text="{data.labl}"/>
    <mx:Spacer width="20" height="20"/>
    <mx:LinkButton label="Удалить" id="del_btn" click="action()"/>
    <mx:Script>
        <![CDATA[
            import mx.core.Application;
            public function action():void {

          }
        ]]>
    </mx:Script>
</mx:HBox>

как мне по нажатию кнопки в этом компаненте удалить из дата провайдера запись о нем?
Впринципе я передаю индекс элемента в дата провайдере внутрь этого айтема тоесть он знает на каком он индексе сидит (data.id)
но мне никак не достучаться до массива,который является дата провайдером для этого листа, хотя я могу достучаться до парента лита....
помогите а?

artfabrique 04.01.2008 20:45

УРА! нашел!
Application.application. итд итп.
только после удалния нада заново айдишники фором в дата провайдере раздать

Sneg 04.01.2008 22:16

Правильнее будет послать событие, которое будет пузыриться и отлавливать его в компоненте, содержащим этот DataGrid.

artfabrique 04.01.2008 22:21

дак а если это событие диспатчит айтем из листа как мне подписаться на него? Я тоже так хотел сначала но пока не допер каг... =))

baron27 06.01.2008 14:17

если не заморачиваться с ивентами, можно обращаться через parentDocument или outerDocument к публичным функциям из любых компонентов к их родителям. Id строки можно получить через list.selectedItem.id. То есть просто обращаемся из компонента к нужной функции, а она уже все остальное делает.

Sneg 06.01.2008 17:24

Подписываться нужно к DataGrid'у в компоненте, содержащем его. А слать событие его можно двумя способами:
1) самим рендерером используя баблинг, тогда в момент отлова target будет рендерер, а currentTarget будет DataGrid
2) из рендерера добраться до DataGrid'a (кажется owner) и сделать owner.dispatchEvent(...), тогда в момент отлова target == currentTarget и это будет DataGrid

artfabrique 06.01.2008 19:23

а это прокаитит с любым компанентом у которого есть айтемренднр?
ну например у меня Таил Лист или Лист

Sneg 06.01.2008 19:41

Прокатит, только если пользоваться вторым путем, сослаться из рендерера к компоненту,возможно, придется другим способом (к примеру, в одной из бетта версий у AdvancedDataGrid'a owner не вернет AdvancedDataGrid, а более ранней возвращает).


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

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