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

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

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

Регистрация: Dec 2009
Сообщений: 122
По умолчанию Копирование экземпляра класса DataGridColumn

Здравствуйте уважаемые программисты.
Подскажите плиз как скопировать экземпляр класса DataGridColumn.
Так не подходит
Код AS3:
var arr1:Array = new Array();
var m:int = dataGrid.columns.length;
for (var j:int = 0; j < m; j++)
{
	arr1.push(new DataGridColumn(dataGrid.columns[j].dataField));
}
dg.columns = arr1;
потому что мы создаем новый DataGridColumn просто с таким же именем, а если у него есть скажем itemRenderer то у нового столбца этого уже не будет. Нужно получить абсолютно такую же колонку со всеми настройками.

Так тоже не работает
Код AS3:
registerClassAlias ("copiedColumn", DataGridColumn);
var tempCols:Array = [];
for each(var col:DataGridColumn in dataGrid.columns)
{
	var buffer:ByteArray = new ByteArray();
	buffer.writeObject(col);
	buffer.position = 0;
 
	tempCols.push(buffer.readObject() as DataGridColumn);
}
 
dg.columns = tempCols;

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Никак. Отнаследоваться от DataGridColumn, прописать ему метод clone() и и в нем отдавать все что нужно.

Старый 13.05.2011, 11:55
AntonSurkont вне форума Посмотреть профиль Отправить личное сообщение для AntonSurkont Найти все сообщения от AntonSurkont
  № 3  
Ответить с цитированием
AntonSurkont
 
Аватар для AntonSurkont

Регистрация: Dec 2009
Сообщений: 122
Скажите плиз что нужно прописать в DataGridColumn чтобы при изменении его рендерера менялось значение dataProvider самого DataGrid-а?

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

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

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

Регистрация: Dec 2009
Сообщений: 122
Вот такой датаГрид
Код AS3:
<mx:DataGrid id="itemDG" dataProvider="{itemAC}" width="100%" height="100%">
<mx:columns>
	<mx:DataGridColumn dataField="name" headerText="Item" />
	<mx:DataGridColumn dataField="quantity" headerText="Quantity" width="100" minWidth="70" rendererIsEditor="true"  editorDataField="result" itemRenderer="renderer.QuantityRenderer"/>
	<mx:DataGridColumn dataField="color" headerText="Color" width="80" rendererIsEditor="true"  editorDataField="result" itemRenderer="renderer.ColorPickerRenderer"/>
	<mx:DataGridColumn dataField="size" headerText="Size" width="140" minWidth="130" rendererIsEditor="true"
editorDataField="result" itemRenderer="renderer.SizeRenderer"/>
	<mx:DataGridColumn dataField="hasLogo" headerText="Logo?" width="100" rendererIsEditor="true" editorDataField="result"
itemRenderer="renderer.CheckRenderer"/>
</mx:columns>
</mx:DataGrid>
Такой датаПровайдер (ну я его там загружаю, просто чтобы структура была понятна)
Код:
<?xml version="1.0" encoding="UTF-8"?>
<items>
	<item name="Item 1" quantity="2" color="sky" size="small" hasLogo="true" />
	<item name="Item 2" quantity="4" color="red" size="medium" hasLogo="false" />
	<item name="Item 3" quantity="2" color="ash" size="large" hasLogo="true" />
	<item name="Item 4" quantity="1" color="navy" size="extra-large" hasLogo="false" />
</items>
Так вот когда скажем я меняю состояние чекБокса в последней колонке (renderer.CheckRenderer), то нужно чтобы и параметр hasLogo для этой записи тоже поменялся

Добавлено через 7 минут
Пока сделал так и все работает:
CheckRenderer.mxml
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center">
	<mx:Script>
		<![CDATA[
			public var result:Boolean = false;
 
			private function updateHandler():void
			{
				data.hasLogo = editor.selected;
				result = editor.selected;
			}
		]]>
	</mx:Script>
	<mx:CheckBox id="editor" selected="{data.hasLogo}" click="updateHandler()"/>
</mx:VBox>
Но очень странно что без строчки data.hasLogo = editor.selected; ничего не работает. Вроде бы все должно было работать и так, потому что
Код AS3:
mx:DataGridColumn dataField="hasLogo" headerText="Logo?" width="100" rendererIsEditor="true" editorDataField="result" itemRenderer="renderer.CheckRenderer"/>
и result меняю как надо, непонятно.


Последний раз редактировалось AntonSurkont; 13.05.2011 в 17:03.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
datagrid , DataGridColumn
Опции темы
Опции просмотра

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

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


 


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


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