PDA

Просмотр полной версии : Вопросы по DataGrid


Bruiser
28.12.2007, 11:30
Два простых вопроса по 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
По второму вопросу: Если есть столбец с 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
По второму вопросу: Если есть столбец с 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