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

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

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

Регистрация: Oct 2007
Сообщений: 66
По умолчанию DataProvider в MXML и AS3 в чем разница

Ниже приведен пример загрузка XML данных в грид и комбобокс объявленные в MXML нотации и грид добавленный программным способом
Вопрос состоит в следующем что нужно дописать к программируемому гриду что бы он вел себя так же как и объявленные MXML нотацией при изменении данных в DATAPROVIDER!

Код:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init();">
<mx:Script>
        <![CDATA[
        	import mx.controls.dataGridClasses.DataGridColumn;
        	import mx.controls.DataGrid;
        [Bindable]
         private var xxx:XML = new XML()
         private var dg:DataGrid = new DataGrid()
            private function init():void
            {
            	
            	var dgcolumns:Array = new Array();
            	
            	var dgcolumn1:DataGridColumn = new DataGridColumn();
            	
            	dgcolumn1.dataField="@id";
            	dgcolumns.push(dgcolumn1)
            	var dgcolumn2:DataGridColumn = new DataGridColumn();
            	dgcolumn2.dataField="@name";
            	dgcolumns.push(dgcolumn2)
            	var dgcolumn3:DataGridColumn = new DataGridColumn();
            	dgcolumn3.dataField="@desc";
            	dgcolumns.push(dgcolumn3)
            	dg.columns = dgcolumns;
            	dg.width=200
            	dg.height=200
            	this.addChild(dg);
            	dg.dataProvider = this.xxx.item;
            	
            	
            }
            private function f(evt:Event):void 
            {
            
            	this.xxx = XML ('<o><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /></o>');
            	
            }
             private function f_2(evt:Event):void 
            {
            
            	this.xxx = XML ('<o><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /></o>');
            	dg.dataProvider = this.xxx.item;// почему приходится добавлять эту строчку? и что дописать что бы было как внотации MXML?
            }
        ]]>
    </mx:Script>
    <mx:Model id="md1">
    	<o>
    	
    	<item id="1" name="name1" desc="ffffffff" />
    	<item id="1" name="name2" desc="ffffffff" />
    	<item id="1" name="name1" desc="ffffffff" />
    	<item id="1" name="name2" desc="ffffffff" />
    	</o>
    </mx:Model>
    
	<mx:ComboBox dataProvider="{xxx.item}" labelField="@name"></mx:ComboBox>
		
	
	<mx:DataGrid dataProvider="{xxx.item}">
		<mx:columns>
			<mx:DataGridColumn headerText="Column 1" dataField="@id"/>
			<mx:DataGridColumn headerText="Column 2" dataField="@name"/>
			<mx:DataGridColumn headerText="Column 3" dataField="@desc"/>
		</mx:columns>
	</mx:DataGrid>
    <mx:Button click="f(event)" label="загрузка обычная" />
	<mx:Button click="f_2(event)" label="загрузка для программируемого грида"/>
	
   
   
</mx:Application>


Последний раз редактировалось Захаров; 23.06.2008 в 16:49.
Старый 25.06.2008, 22:26
Borman2000 вне форума Посмотреть профиль Отправить личное сообщение для Borman2000 Найти все сообщения от Borman2000
  № 2  
Ответить с цитированием
Borman2000
 
Аватар для Borman2000

Регистрация: Dec 2006
Сообщений: 50
Отправить сообщение для Borman2000 с помощью ICQ
Так будет работать с обоими гридами. Но вот почему не работает твой вариант...
Код:
<mx:Binding 
        source="xxx.item" 
        destination="dg.dataProvider"/>
Может проблема в том, что MXML и событие для датабиндинга формируется на этапе компиляции, а программный грид формируется в рантайме, т.е. для него нету события.

Можно попробовать поюзать BindingUtils.bindProperty


Последний раз редактировалось Borman2000; 25.06.2008 в 23:16.
Старый 28.06.2008, 14:32
zlatko вне форума Посмотреть профиль Отправить личное сообщение для zlatko Найти все сообщения от zlatko
  № 3  
Ответить с цитированием
zlatko

Регистрация: Oct 2007
Адрес: Украина, Львов
Сообщений: 111
Отправить сообщение для zlatko с помощью ICQ
Если использовать вместо XML непосредственно XMLList который будет источником, то все образуеться

Вот шаблончик :

Код:
[Bindable]
public var xxx:XMLList = new XMLList();

private function init():void
{            	
   *** 
   BindingUtils.bindProperty(dg, "dataProvider", this, "xxx");
   
   this.addChild(dg);
}

private function f(evt:Event):void 
{            
   this.xxx = XMLList('<item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" />');
}      
   
<mx:ComboBox dataProvider="{xxx}" labelField="@name"/>
			
<mx:DataGrid dataProvider="{xxx}">
  ***
</mx:DataGrid>
С XML такой номер не пройдет, потому как bindProperty не позволяет использовать в качестве своих параметров E4X, тоисть написать что-то типа BindingUtils.bindProperty(dg, "dataProvider", this, "xxx.item") у Вас не получиться.

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

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

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


 


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


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