Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Вопросы по DataGrid (http://www.flasher.ru/forum/showthread.php?t=105975)

Bruiser 28.12.2007 11:30

Вопросы по DataGrid
 
Два простых вопроса по DataGrid.
1. Заполняю DataGrid динамически
Код:

//Формирование массива столбцов для DataGrid
var arr:Array = new Array();
for each (var item:XML in myXML.metadata.children()){
        var dgc:DataGridColumn = new DataGridColumn();       
        dgc.dataField = item.@id;
        dgc.headerText = item.@nameGUI;
        if (item.@size!=0 && item.@size!=""){
                dgc.width = item.@size;
        }
        arr.push(dgc);
}
dg_v01.columns = arr;               

//Формирование массива с данными для DataGrid
myXML = XML(myLoader.data);
dg_v01.dataProvider = myXML.data.children();

НО, если я не задам ширину, то столбцу будет присвоена ширина ноль по умолчанию. Можно ли как-то задать, чтобы все столбцы, которым не присвоена ширина, поделили оставшуюся ширина поровну?!

2. В DataGrid есть столбец ID. Как можно спозиционировать DataGrid на строку, где ID равно например 123?

Sneg 06.01.2008 19:53

По второму вопросу: Если есть столбец с ID=123, то есть и объект в dataProvider'e c таким ID. Соотвественно достаточно написать метод типа getItemByID(id:int,collection:ArrayCollection):Object который будет возвращать нужный объект и сделать
Код:

dataGrid.selectedItem = getItemByID(123,dataGrid.dataProvider as ArrayCollection);

Bruiser 09.01.2008 02:53

Цитата:

Сообщение от Sneg
По второму вопросу: Если есть столбец с ID=123, то есть и объект в dataProvider'e c таким ID. Соотвественно достаточно написать метод типа getItemByID(id:int,collection:ArrayCollection):Object который будет возвращать нужный объект и сделать
Код:

dataGrid.selectedItem = getItemByID(123,dataGrid.dataProvider as ArrayCollection);

А если например в компоненте DataGrid 10 элементов, на экране видны только первые 5, а нужно спозиционироваться на последнем элементе. Он может быть и выделиться, но пока человек не прокрутит, он не увидит выделенный. Что можно сделать?

Sneg 09.01.2008 13:25

Тогда после выделения элемента сделать принудительный скролинг: dataGrid.scrollToIndex(dataGrid.selectedIndex);

Bruiser 09.01.2008 16:58

пасиб)

bereal 23.01.2008 15:29

Цитата:

Сообщение от Sneg
По второму вопросу: Если есть столбец с ID=123, то есть и объект в dataProvider'e c таким ID. Соотвественно достаточно написать метод типа getItemByID(id:int,collection:ArrayCollection):Object который будет возвращать нужный объект и сделать
Код:

dataGrid.selectedItem = getItemByID(123,dataGrid.dataProvider as ArrayCollection);

Есть какие то идеи по реализации такого метода, кроме как полный обход всей ArrayCollection?

NikR 23.01.2008 15:45

Чтоб не 0(default): && item.@size!=undefined

Sneg 23.01.2008 16:39

Нет, думаю, в любом случае нужно проверить каждый item. for each - работает быстро, не вижу никаких проблем.

bereal 23.01.2008 16:41

Просто допустим там 100 элементов а обновление происходит до 10 раз в секунду - нормальная такая нагрузочка получается, для обычного хеша

Sneg 23.01.2008 16:45

А как ставится задача в более общем случае? Что необходимо реализовать? Зачем обновлять 10 раз в секунду? Возможно существует другое решение.

bereal 23.01.2008 17:33

Поток финансовых котировок

Rution 26.01.2008 02:20

Ребята помогите.
1) я точно знаю что во Flash можно было извлекать ячейку т.е. было событие cellPress, а вот имеется ли она во Flex? если нет, то не подскажите каким образом можно работать с ячейками.
2) Во Flex существует понятие "ячейка"?

Sneg 26.01.2008 04:16

Есть понятие Item - этого полностью достаточно, в AdvancedDataGrid при желании можно выделять отдельные ячейки. Событие itemClick


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

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