Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как понять, какие CheckBox выделены?! (http://www.flasher.ru/forum/showthread.php?t=99622)

kirillmana 09.08.2007 18:14

Как понять, какие CheckBox выделены?!
 
Есть список операторов, которые в DataGrid'е. Все поля, кроме первого, заполняются данными из XML, полученного от сервиса.
В первом столбце - CheckBox.
Выбираем операторов с помощью CheckBox и после (например) нажатия какой-нибудь кнопки, необходимо получить массив операторов, которые выбраны.
Я догадываюсь, как делать, если обрабатывать каждое выделение. А можно ли получить сразу весь массив?!

Код:

                <mx:DataGrid id="dg" bottom="40" left="10" right="10" top="66">
                        <mx:columns>                               
                                <mx:DataGridColumn headerText=" " dataField="isSelect" editable="true" rendererIsEditor="true" itemRenderer="mx.controls.CheckBox" editorDataField="selected" width="1"/>
                                <mx:DataGridColumn headerText="УК" dataField="uk" width="10"/>
                                <mx:DataGridColumn headerText="Л/С" dataField="paccount" width="10"/>
                                <mx:DataGridColumn headerText="КРС" dataField="krs" width="10"/>
                                <mx:DataGridColumn headerText="Оператор" dataField="name_op" width="30"/>
                                <mx:DataGridColumn headerText="Уров. присоед" dataField="link_level" width="10"/>
                        </mx:columns>
                </mx:DataGrid>


Sneg 09.08.2007 18:50

При изменении нажатии checkBox'a меняется значение в dataProvider'e (если itemRenderer написан правильно). При нажатии кнопку, все выделенные элементы легко получить с помощью примерно такой выборки (примерный код):
Код:

var dataProvider:XMLList=(dataGrid.dataProvider as XMLListCollection).sourse
var selectedItems:XMLList=dataProvider.(@isSelect == "true")


kirillmana 10.08.2007 09:58

На самом деле, не получается, потому что (как я уже писал), все колонки кроме первой заполняются из полученного XML. В XML'е я получаю информацию об операторах.
И, вытаскивая dataProvider,
Код:

var dataProvider:XMLList=(dataGrid.dataProvider as XMLListCollection).sourse
я получаю тот же самый XML, который задавал на входе и столбца isSelect там нет.

kirillmana 10.08.2007 11:22

Все, как вариант можно при получении XML делать
Код:

myXML = XML(myLoader.data);
var item:XML;
var isSelect:XML = <isSelect>false</isSelect>
for each(item in myXML.children()){
        item.appendChild(isSelect);
}                               
dg.dataProvider = myXML.children();

Sneg, там только единственно не dataProvider.(@isSelect == "true"), а dataProvider.(isSelect == "true") - это же элемент, а не атрибут

Sneg 10.08.2007 11:48

Формат dataProvider'a входящих данных ты не дал - потому и предположил что это атрибут :)

kirillmana 10.08.2007 12:21

Только сейчас побочный глюк, не понятно от чего...:eek:
Код:

<mx:DataGrid id="dg" bottom="40" left="10" right="10" top="66" editable="true">
        <mx:columns>                               
                <mx:DataGridColumn headerText=" " dataField="isSelect" editable="true" rendererIsEditor="true" itemRenderer="mx.controls.CheckBox" editorDataField="selected" width="1"/>
                <mx:DataGridColumn headerText="УК" dataField="uk" width="10" editable="false"/>
                <mx:DataGridColumn headerText="Л/С" dataField="paccount" width="10" editable="false"/>
        </mx:columns>
</mx:DataGrid>

Кликаю на CheckBox в первой строчке - стал выделенным (selected), потом во второй - второй CheckBox выделяется, а выделение с первого CheckBox убирается. Т.е. нельзя как бы выбрать сразу несколько выделенных CheckBox. "Навыделял" я так несколько CheckBox, потом на жимаю на кнопку
Код:

var dataPr:XMLList = (dg.dataProvider as XMLListCollection).source;
var selectedItems:XMLList = dataPr.(isSelect=="true");
var item:XML;
for each (item in selectedItems){
        trace(item.uk);                                       
}

и у меня убирается выделение и с последнего выделенного CheckBox. Может я какое-то свойство не так поставил.

Но самое интересное, что trace выдает все те строки, которые я как бы выделел, но не видно, что они выделены.:boredom:

Sneg 10.08.2007 12:49

Не видно - потомучто возможно ты в itemRenderer'e не переписал метод
Код:

set data (data:Object):void
почитай в хелпе - там есть подобный пример.

__i 10.08.2007 13:46

kirillmana почему ты отказываешься пользоваться поиском? или ты думаешь что при средней гениальности флешеров ты самый гениальный и только ты придумал использовать чекбоксы в айтем рендерах?

Лично я давал тут пример http://www.flasher.ru/forum/showthread.php?t=91950
чтобы его найти я потратил 5 кликов мыши и 8 нажатий на кнопоки клавиатуры (ввод слова comboBox)

+ я могу найти легким движением руки еще несколько примеров применения комбобокса в айтем рендерах в интернете.

ты уже неделю паришься с этими рендерами, неужели тяжело потратить целый день на изучение, а потом за 5 минут долететь?


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

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