Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.09.2010, 12:31
ZpiRit вне форума Посмотреть профиль Отправить личное сообщение для ZpiRit Найти все сообщения от ZpiRit
  № 1  
Ответить с цитированием
ZpiRit

Регистрация: Jun 2007
Сообщений: 16
По умолчанию Как программно вызвать сортировку DataGrid?

Добрый день. У меня есть DataGrid в котором отображается список пользователей ( XmlList). Этот датагрид осритруется по полю xmlDataProvider.online. Вот в один прекрасный момент я определяю что один из пользователей вышел и я меняю его свойство xmlDataProvider[0].online=0. Проблема в том что после того как я сменил свойство надо отсортировать датагрид по новой, но я ума не приложу как это сделать Подскажите пожалуйста.

Старый 20.09.2010, 13:23
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 2  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
По хорошему - надо делать сортировку на датаПровайдере компонента. Но если нужна простая сортировка по одному столбцу - то легче отсортировать массив, который ты присваиваешь датаПровайдеру.

Старый 21.09.2010, 16:52
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 3  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
Кстати, думал где-то так ответить (тоже делаю через класс Sort). Но у меня тоже вопрос - а можно ли так отсортировать датагрид, чтобы и сортировка была, и стрелочка сортировки в шапке отображалась?

Старый 21.09.2010, 19:21
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 4  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Вроде стрелочка и так связана с полем sort.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 21.09.2010, 19:56
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 5  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
Не-а, делаю примерно так:
Код AS3:
private var areasCursor:IViewCursor;
...
(_remoteData as RemoteObject).getAreas.addEventListener("result", getAreasResultHandler);
...
private function getAreasResultHandler(event:ResultEvent):void {
	var sort:Sort = new Sort();
	sort.fields = [new SortField("title", true)];
	areas.sort = sort;
	areas.refresh();
	areasCursor = areas.createCursor();
}
...
<mx:ArrayCollection id="areas" list="{(_remoteData as RemoteObject).getAreas.lastResult}"/>
...
<mx:DataGrid id="dg_areas" width="320" height="200" dataProvider="{areas}">
	<mx:columns>
		<mx:DataGridColumn headerText="Areas" dataField="title"/>
	</mx:columns>
</mx:DataGrid>
Отображается все хорошо, при вставке нового снова делаем сорт (если коллекция небольшая) или вставляем в нужное место в зависимости от поля сортировки. Но при этом возможности сортировки самого датагрида не учтены - при первом клике появляется стрелочка и элементы отображены как я их сформировал (скажем, по алфавиту по возрастанию).

Старый 21.09.2010, 20:09
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
В наследнике датаГрида вызывай placeSortArrow(), не забыв предварительно указать порядок сортировки.

Старый 21.09.2010, 20:56
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 7  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
Не, это надо создавать кастомный, переопределять ... муторно из-за одного значка.
Зато заинтересовался этим вопросом и нашел решение:
Код AS3:
(dg_areas.columns[0] as DataGridColumn).sortDescending = true; //или false - это для теста
dg_areas.dispatchEvent(new DataGridEvent(DataGridEvent.HEADER_RELEASE, false, true, 0, "title", 0, null, null, 0));
Причем, можно не заморачиваться с собственным сортингом - встроенный у датагрида точно такой же, просто надо вызвать DataGridEvent с событием HEADER_RELEASE - отсортируется и стрелочку установит.

А что касается приведенного protected метода, то, насколько я понял, он определяет местоположение самого значка, но не производит непосредственно сортировку.

Старый 22.09.2010, 11:18
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 8  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Все правильно - только отрисовывает стрелку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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