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

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

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

Регистрация: Dec 2008
Сообщений: 1
По умолчанию DataGrid: ширина столбца по содержанию

всем доброго времени суток и всех с наступающим

у меня вопрос вот какого плана..
есть DataGrid, заполняемый данными.
заголовки столбцов в нем могут быть самой разной длины, и мне нужно, чтобы:
1. название каждого столбца помещалось в заголовке (без изменения шрифта)
2. если имя столбца очень короткое - чтобы в заголовке столбца не оставалось много свободного места.

иными словами, мне нужно, чтобы ширина каждого столбца менялась в зависимости от содержимого его заголовка..
я понимаю, что нужно имплементировать свой headerRenderer, но, так как ранее с рендерерами дела не имел, пока не получается добиться желаемого эффекта.

допустим, что сам датагрид у меня описан примерно в таком формате:

Код:
<mx:DataGrid headerRenderer="ColumnRenderer" >
<mx:dataProvider>
   <mx:ArrayCollection>
      <mx:source>
          <mx:Object Name="name 1" SecondName="second name 1"/>                                                 	        
      </mx:source>
   </mx:ArrayCollection> 
</mx:dataProvider> 		                             

<mx:columns>
<mx:DataGridColumn headerRenderer="ColumnRenderer" headerText="Name" dataField="Name" />
<mx:DataGridColumn headerRenderer="ColumnRenderer" headerText="Second Name" dataField="PrevClaimID" />
</mx:columns>
</mx:DataGrid>
и, соответственно, я создаю файл ColumnRenderer.mxml:

Код AS3:
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml"  >
 
  <mx:Script>
    <![CDATA[
 
 	import mx.controls.dataGridClasses.*;
	import mx.controls.listClasses.*;
	import mx.controls.Label;
 
      override public function set data(value:Object):void
      {
 
	if(value != null)
	{
 
               // допустим, длину текста в заголовке я могу получить так:
	    var myListData:DataGridListData = DataGridListData(listData);
	    var textLength:int = myListData.label.length;
 
	    // чтобы изменить сам текст в заголовке столбца - достаточно сделать так:
	     text = "bla-bla";	    
 
               // а вот как установить получать ширину заголовка в пикселях, и как установить ширину столбца - не понимаю
               // ....
            }
 
      }
 
  </mx:Script>
 
</mx:Label>
если не сложно - подскажите, как реализовать данную фичу..
нужно ли вообще переопределять функцию set data или же надо идти каким-то иным путем?
Заранее спасибо и с Новым Годом.)


Последний раз редактировалось izok; 02.01.2009 в 11:18.
Создать новую тему Ответ Часовой пояс GMT +4, время: 15:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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