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

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

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

Регистрация: Sep 2007
Сообщений: 146
По умолчанию Сортировка по дате в Datagrid-е

Есть датагрид
Код:
<mx:AdvancedDataGrid id="adg" left="10" right="10" bottom="10" top="40" horizontalScrollPolicy="auto" alternatingItemColors="[#dadada, #eeeeee]" 
		headerWordWrap="true" sortExpertMode="false">
		<mx:columns>
			<mx:AdvancedDataGridColumn dataField="TP_NAME" headerText="Тарифный план" width="280"/>
			<mx:AdvancedDataGridColumn dataField="DATE_FROM" headerText="Начало продаж" width="140"/>			
			<mx:AdvancedDataGridColumn dataField="DATE_TO" headerText="Конец продаж" width="140"/>	
		</mx:columns>
	</mx:AdvancedDataGrid>
Заполнение данных
Код:
 
var arr:ArrayCollection = new ArrayCollection();
for each(var x:XML in myXML.data.children()){
	arr.addItem({
			TP_NAME:x.TP_NAME,
			DATE_FROM:x.DATE_FROM,
			DATE_TO:x.DATE_TO
	});
}					
adg.dataProvider = arr;
Функция сортировки
Код:
private function sortDate(obj1:Object, obj2:Object):int
{
  var d1:Number = (new Date(Date.parse(obj1.date))).getTime();
  var d2:Number = (new Date(Date.parse(obj2.date))).getTime();
  if(d1 < d2) {
    return -1;
  } else if(d1 == d2) {
    return 0;
  }
  return 1;
}
ошибка возникает при парсинге даты. В чем может быть проблема?

Старый 13.07.2009, 19:53
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А где вы видите у obj1 свойство date?
Даже если оно там есть, то сказать в чем ошибка вам никто не сможет, потому что неизвесно чему оно равно.
Кроме того, свойства со строчной, для таких операций используйте valueObject'ы со строгой типизацией, и храните свойство date как Date или Number - в зависимости от того, что нужнее, это крайне непродуктивно заниматься парсингом датапровайдера каждый раз, когда нужно таблицу отсортировать. И не используйте выражения, которые нужно пересчитывать в условии for / for-each и т.п.
__________________
Hell is the possibility of sanity

Старый 14.07.2009, 14:23
Bruiser вне форума Посмотреть профиль Отправить личное сообщение для Bruiser Найти все сообщения от Bruiser
  № 3  
Ответить с цитированием
Bruiser

Регистрация: Sep 2007
Сообщений: 146
Да, я там ошибся obj1.DATE_FROM и obj2.DATE_FROM
Вот эта
Код:
private function sortDate(obj1:Object, obj2:Object):int
{
  var d1:Number = (new Date(Date.parse(obj1.DATE_FROM))).getTime();
  var d2:Number = (new Date(Date.parse(obj2.DATE_FROM))).getTime();
  if(d1 < d2) {
    return -1;
  } else if(d1 == d2) {
    return 0;
  }
  return 1;
}
А поясните насчет этого
Цитата:
Кроме того, свойства со строчной, для таких операций используйте valueObject'ы со строгой типизацией, и храните свойство date как Date или Number - в зависимости от того, что нужнее, это крайне непродуктивно заниматься парсингом датапровайдера каждый раз, когда нужно таблицу отсортировать. И не используйте выражения, которые нужно пересчитывать в условии for / for-each и т.п.


Последний раз редактировалось Bruiser; 14.07.2009 в 15:54.
Старый 14.07.2009, 16:18
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
свойства со строчной:
obj1.DATE_FROM ----> obj1.dateFrom

valueObject'ы со строгой типизацией
Код AS3:
public class SomeValueObject
{
public var dateFrom:Date;
public var dateTo:Date;
public var name:String;
 
public function SomeValueObject(dateFrom:Date, dateTo:Date, name:String)
{
super();
this.dateFrom = dateFrom;
this.dateTo = dateTo;
this.name = name;
}
}
Код AS3:
//
arr.addItem(new SomeValueObject(new Date(x.DATE_FROM), 
                 new Date(x.DATE_TO), 
                 x.TP_NAME));
//
__________________
Hell is the possibility of sanity

Старый 16.07.2009, 16:42
Bruiser вне форума Посмотреть профиль Отправить личное сообщение для Bruiser Найти все сообщения от Bruiser
  № 5  
Ответить с цитированием
Bruiser

Регистрация: Sep 2007
Сообщений: 146
А как правильно парсить Date из строки?
Я делаю вот так
Код:
var str:String = "01.12.2008";
var dt = new Date(Date.parse(str));
И в итоге не получается

Понял, что если поменять формат числа, то все норм
Код:
var str:String = "01/12/2008";
var dt = new Date(Date.parse(str));
Что нужно сделать, чтобы можно было нормально парсить с точками?


Последний раз редактировалось Bruiser; 16.07.2009 в 16:45.
Старый 16.07.2009, 17:49
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
var dt = new Date(Date.parse(str));
Избыточно, и не должно компилироваться, должно быть так:
Код AS3:
var dt:Date = new Date(str);
Заменить точки - слешами - RegExp вам в руки... ну или напишите, в каком формате вам даты отдают. А еще лучше - отпинать умника, который туда точки поставил, есть стандарты, как дату записывать, а за самодеятельность приходится платить
__________________
Hell is the possibility of sanity

Старый 16.07.2009, 17:55
Bruiser вне форума Посмотреть профиль Отправить личное сообщение для Bruiser Найти все сообщения от Bruiser
  № 7  
Ответить с цитированием
Bruiser

Регистрация: Sep 2007
Сообщений: 146
Сделал вот так
Код:
var DATE_FROM:String = "01.12.2008";
var arr:Array = DATE_FROM.split(".");					
this.DATE_FROM = new Date(arr[2],arr[1]-1,arr[0]);
Но теперь загвостка в том, что неправильно отображается дата в таблице
Хотя формат такой стоит
Код:
<mx:DateFormatter id="dateFormat" formatString="DD.MM.YYYY" />	
<mx:AdvancedDataGrid id="adg" left="10" right="10" bottom="10" top="40" horizontalScrollPolicy="auto" alternatingItemColors="[#dadada, #eeeeee]" 
		headerWordWrap="true" sortExpertMode="false">
	<mx:columns>
		<mx:AdvancedDataGridColumn dataField="DATE_FROM" headerText="Начало продаж" width="140" formatter="{dateFormat}"/>			
		<mx:AdvancedDataGridColumn dataField="DATE_TO" headerText="Конец продаж" width="140" formatter="{dateFormat}"/>		
	</mx:columns>
</mx:AdvancedDataGrid>
Изображения
 

Старый 20.07.2009, 10:23
Bruiser вне форума Посмотреть профиль Отправить личное сообщение для Bruiser Найти все сообщения от Bruiser
  № 8  
Ответить с цитированием
Bruiser

Регистрация: Sep 2007
Сообщений: 146
Неужели никто никогда не сталкивался?

Старый 20.07.2009, 18:07
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
не знаю, я вообще не понимаю, что это оно у вас показывает
__________________
Hell is the possibility of sanity

Старый 20.07.2009, 18:08
Bruiser вне форума Посмотреть профиль Отправить личное сообщение для Bruiser Найти все сообщения от Bruiser
  № 10  
Ответить с цитированием
Bruiser

Регистрация: Sep 2007
Сообщений: 146
Цитата:
Сообщение от wvxvw Посмотреть сообщение
не знаю, я вообще не понимаю, что это оно у вас показывает
2008 год отображается как 300, а 2009 год - 400


Последний раз редактировалось Bruiser; 20.07.2009 в 18:30.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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