<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Debugando.com &#187; FLEX</title>
	<atom:link href="http://www.debugando.com/categoria/programacao/flex-programacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.debugando.com</link>
	<description>Noticias, dicas e tutorias do mundo da Tecnologia.</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:44:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Quais as maiores Duvidas sobre FLEX</title>
		<link>http://www.debugando.com/quais-as-maiores-duvidas-sobre-flex/</link>
		<comments>http://www.debugando.com/quais-as-maiores-duvidas-sobre-flex/#comments</comments>
		<pubDate>Mon, 03 May 2010 18:12:38 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[duvidas]]></category>
		<category><![CDATA[flex 4]]></category>
		<category><![CDATA[o que é flex]]></category>
		<category><![CDATA[o que é ria]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=1102</guid>
		<description><![CDATA[


1-O que é Flex?
Flex é um produto da Adobe que possui a finalidade de desenvolver aplicativos RIA &#8211; Rich Internet Applications.
2-Como o Flex funciona?
O Flex tem como base a linguagem Action Script 3.0, junto com uma outra linguagem de desenvolvimento chamada MXML.
3-O Flex é gratuito?
Sim, o Flex Framework é gratuito. Isso significa que você pode [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1-O que é Flex?</strong></p>
<p>Flex é um produto da Adobe que possui a finalidade de desenvolver aplicativos RIA &#8211; Rich Internet Applications.</p>
<p><strong>2-Como o Flex funciona?</strong></p>
<p>O Flex tem como base a linguagem Action Script 3.0, junto com uma outra linguagem de desenvolvimento chamada MXML.</p>
<p><strong>3-O Flex é gratuito?</strong></p>
<p>Sim, o Flex Framework é gratuito. Isso significa que você pode editar o seu código no Notepad (ou no seu editor de preferência) e compilar (iremos mostrar como criar um arquivo .bat).</p>
<p><strong>4-O que é RIA?</strong></p>
<p>A RIA é uma tendência de desenvolvimento web que vem crescendo no mundo inteiro, e possui a proposta de criar aplicativos web (que funcionem no seu navegador) que são &#8220;ricos&#8221; em sua interface.</p>
<p><strong>5-O Flex conecta no banco de dados?</strong></p>
<p>Não.</p>
<p><strong>6-O que é Flex 2 SDK?</strong></p>
<p>Flex 2 SDK é parte do Software Development Kit que a Adobe distribui como parte de sua estratégia de adoção do Flex 2 no mercado.</p>
<p><strong>7-Quais as vantagens de se usar o Flex 2 SDK?</strong></p>
<p>A grande vantagem é que é gratuito, você pode usar o Flex 2 SDK em qualquer editor de XML ou até mesmo o notepad que você desejar. Um exemplo típico é o próximo exemplo logo abaixo que será mostrado, o uso do Flex 2 SDK com um editor freeware, o notepad++.</p>
<p><strong> <img src='http://www.debugando.com/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> Flex 2 SDK é realmente gratuito?</strong></p>
<p>Sim, o Flex 2 SDK é totalmente gratúito e pode ser usado para fins comerciais as aplicações feitas com ele, e não o SDK em sí. No próprio diretório onde você descompactou o Flex 2 SDK, tem um arquivo chamado License.htm onde você pode ler detalhadamente o termo de licença de software do Flex 2 SDK.</p>
<p><strong>9-Onde posso fazer o download do Flex 2 SDK?</strong></p>
<p>O Flex 2 SDK pode ser baixado diretamente do site da Adobe, pelo seguinte endereço abaixo.</p>
<p>http://www.adobe.com/cfusion/tdrc/index.cfm?product=flex</p>
<p><strong>10-Qual a diferença entre o Flex Builder 2 e o Flex 2 SDK?</strong></p>
<p>Ambos são parte integrantes da família Adobe Flex, porém Flex Builder 2 é uma ferramenta de desenvolvimento conhecida por IDE, para criação com melhor visual de suas aplicações, é uma ferramenta integral como o Microsoft Visual Studio, traz uma forma nova e fácil de se usar com recursos visuais igual ao Eclipse WTD para criar layouts de forma fácil. O Flex Builder 2 usa o Flex 2 SDK que é gratuito, como parte de sua IDE, facilitando a vida do desenvolveor, com isso o Flex Builder é pago.</p>
<p><strong>11-Não sei nada de Flex, devo estudar primeiro o 3 ou partir para o 4?</strong></p>
<p>Pode ir direto ao Flex 4! Muitos conceitos mudaram e será perda de tempo aprender 3 para depois ir ao 4.</p>
<p><strong>1</strong><strong>2-Devo investir no Flex 4?</strong></p>
<p>Absolutamente sim! Flex 4 é uma &#8220;baita&#8221; evolução e você deve segui-la para os seus novos projetos. Além do Flex 4, tem o Adobe Air 2.0 e, em breve, suporte à tecnologia Android e a dispositivos móveis. Então a Apple torceu o nariz para o Flash Player, o Google se uniu à Adobe e juntas vão lançar o Flash Player 10 para a plataforma Android. O futuro com certeza é bastante promissor, e ainda nem falamos dos tablets!!</p>
<p>Ae galera é isso espero que tenham aproveitado algumas dessas perguntas e respostas, Obrigado!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/quais-as-maiores-duvidas-sobre-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Flex &#8211; Como colocar gráficos em repeater</title>
		<link>http://www.debugando.com/adobe-flex-como-colocar-graficos-em-repeater/</link>
		<comments>http://www.debugando.com/adobe-flex-como-colocar-graficos-em-repeater/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 22:17:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FLEX]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Gráficos]]></category>
		<category><![CDATA[MXML]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=561</guid>
		<description><![CDATA[Estou desenvolvendo um modelo de Dashboard de Indicadores de Performace (KPI) utilizando o Adobe Flex, Asp.NET e SQL Server 2000.
Nesse Dashboard eu precisava exibir vários gráficos de acordo com o perfil de cada usuário. Por isso, construir um modelo fixo não seria possível. Então busquei maneiras de fazer isso utilizando o mx:Tile e o mx:Repeater.
Na [...]]]></description>
			<content:encoded><![CDATA[<p>Estou desenvolvendo um modelo de <strong>Dashboard</strong> de Indicadores de Performace (KPI) utilizando o Adobe Flex, Asp.NET e SQL Server 2000.</p>
<p>Nesse Dashboard eu precisava exibir vários gráficos de acordo com o perfil de cada usuário. Por isso, construir um modelo fixo não seria possível. Então busquei maneiras de fazer isso utilizando o mx:Tile e o mx:Repeater.</p>
<p>Na busca encontrei apenas um exemplo de Datagrid em um Repeater, com isso foi possível construir o modelo para utilizar com Gráficos.</p>
<p>Primeiro é preciso entender a estrutura de DataProvider, necessária para que tudo funcione como o esperado.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12186/igormusardo_1.gif" alt="" /></p>
<p>Como na figura acima, o DataProvider é um ArrayCollection composto de um ArrayCollection para cada gráfico que será exibido no Repeater, cada um desse segundo ArrayCollection é composto por objetos que serão os pontos dos gráficos.</p>
<p>Abaixo está o código responsável pela configuração do ArrayCollection, que será o DataProvider do mx:Repeater.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Script</span><span class="pun">&gt;</span><span class="pln">
        &lt;![CDATA[
                import mx.utils.ObjectProxy;
                import mx.core.Application;
                import mx.utils.ObjectUtil;
                import mx.rpc.events.FaultEvent;
                import mx.rpc.events.ResultEvent;
                import mx.collections.ArrayCollection;

                //ArrayCollection que será o DataProvider do Repeater
                [Bindable]
                private var arDadosGraficoTotal:ArrayCollection = new ArrayCollection();

                private function load():void
                {
                        var arDadosGrafico:ArrayCollection;
                        var obDadosGrafico:ObjectProxy;

                        //Gráfico 1
                        //arDadosGrafico recebe um novo ArrayCollection
                        arDadosGrafico = new ArrayCollection();
                        //obDadosGrafico recebe um novo ObjectProxy
                        obDadosGrafico = new ObjectProxy();
                        //Cria a propriedade data1 e atribiu o 10, data1 será uma série no gráfico
                        obDadosGrafico.data1 = 10;
                        //Cria a propriedade data2 e atribiu o 5, data2 será outra série no gráfico
                        obDadosGrafico.data2 = 05;
                        //Cria a propriedade label e atribiu 'Jan', label será o eixo X do gráfico
                        obDadosGrafico.label = 'Jan';                   

//Cria a propriedade titulo e atribiu 'Vendas', titulo será o titulo do
gráfico, só existirá essa propriedade no primeiro ObjectProxy
                        obDadosGrafico.titulo = 'Vendas';      
                        //Adiciona o ObjectProxy obDadosGrafico ao ArrayCollection arDadosGrafico      
                        arDadosGrafico.addItem(obDadosGrafico);

//obDadosGrafico recebe um novo ObjectProxy e receberá os mesmas
propriedades porém com valores distintos e também é inserido ao
ArrayCollection arDadosGrafico
                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 05;
                        obDadosGrafico.data2 = 05;
                        obDadosGrafico.label = 'Fev';                  
                        arDadosGrafico.addItem(obDadosGrafico);

                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 03;
                        obDadosGrafico.data2 = 05;
                        obDadosGrafico.label = 'Mar';                  
                        arDadosGrafico.addItem(obDadosGrafico);

                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 06;
                        obDadosGrafico.data2 = 05;
                        obDadosGrafico.label = 'Abr';                  
                        arDadosGrafico.addItem(obDadosGrafico);

//Quando terminam os pontos do gráfico é necessário inserir o
ArrayCollection arDadosGrafico ao ArrayCollection arDadosGraficoTotal
                        arDadosGraficoTotal.addItem(arDadosGrafico);    

//Os passos anteriores devem ser feitos para cada gráfico que se deseja
exibir no Dashboard, abaixo estão identificos como Gráfico 2 e Gráfico 3
                        //Gráfico 2
                        arDadosGrafico = new ArrayCollection();
                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 07;
                        obDadosGrafico.data2 = 02;
                        obDadosGrafico.label = 'Jan';                  
                        obDadosGrafico.titulo = 'Custos';                      
                        arDadosGrafico.addItem(obDadosGrafico);

                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 08;
                        obDadosGrafico.data2 = 02;
                        obDadosGrafico.label = 'Fev';                  
                        arDadosGrafico.addItem(obDadosGrafico);

                        obDadosGrafico = new ObjectProxy();

                        obDadosGrafico.data1 = 05;
                        obDadosGrafico.data2 = 02;
                        obDadosGrafico.label = 'Mar';                  
                        arDadosGrafico.addItem(obDadosGrafico);

                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 04;
                        obDadosGrafico.data2 = 02;
                        obDadosGrafico.label = 'Abr';                  
                        arDadosGrafico.addItem(obDadosGrafico);

                        arDadosGraficoTotal.addItem(arDadosGrafico);    

                        //Gráfico 3
                        arDadosGrafico = new ArrayCollection();
                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 10;
                        obDadosGrafico.data2 = 08;
                        obDadosGrafico.label = 'Jan';                  
                        obDadosGrafico.titulo = 'Produção';                    
                        arDadosGrafico.addItem(obDadosGrafico);

                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 12;
                        obDadosGrafico.data2 = 08;
                        obDadosGrafico.label = 'Fev';                  
                        arDadosGrafico.addItem(obDadosGrafico);

                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 06;
                        obDadosGrafico.data2 = 08;
                        obDadosGrafico.label = 'Mar';                  
                        arDadosGrafico.addItem(obDadosGrafico);

                        obDadosGrafico = new ObjectProxy();
                        obDadosGrafico.data1 = 08;
                        obDadosGrafico.data2 = 08;
                        obDadosGrafico.label = 'Abr';                  
                        arDadosGrafico.addItem(obDadosGrafico);

                        arDadosGraficoTotal.addItem(arDadosGrafico);    

//Ao terminado de incluir todos os arDadosGrafico ao
arDadosGraficoTotal, é necessário declarar arDadosGraficoTotal como
dataProvider do repeater
                        rpGrafico.dataProvider = arDadosGraficoTotal;  
                }               

        ]]&gt;
</span><span class="pun">&lt;/</span><span class="tag">mx:Script</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Abaixo está o código necessário para exibir os gráficos. Inicialmente foi utilizado um Tile e dentro um Repeater. Dentro do Repeater há um Panel e dentro do Panel está o gráfico que deve ser exibido de acordo com o dataProvider.</p>
<p>Como demonstrado acima, o dataProvider é associado ao término da função load(). Após a associação, o Repeater começará a renderizar o primeiro gráfico, e já no título do Panel o valor atribuído será a propriedade título definida no primeiro objeto do arDadosGrafico.</p>
<p>Para isso é utilizada a instrução: {rpGrafico.currentItem.getItemAt(0).titulo}, ou seja, rpGrafico é o Repeater, a propriedade currentItem contém o arDadosGrafico do laço em questão e getItemAt(0) assegura que só buscará a propriedade título no primeiro objeto dentro do arDadosGrafico.</p>
<p>Para o gráfico, só resta associar um dataProvider a ele para que sejam exibidos os seus pontos. O dataProvider em questão será o currentItem do Repeater rpGrafico, pois como dito acima, a propriedade currentItem contém o arDadosGrafico do laço em questão.</p>
<p>No eixo X, horizontalAxis, é definido label como o campo fonte dos dados. No eixo Y, verticalAxis, está configurado para não começar em zero. Logo abaixo estão as duas séries, uma para o data1 (Indicador Técnico) e outra para data2 (Meta).</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Tile</span><span class="pln"> </span><span class="atn">left</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">right</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">top</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">bottom</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">direction</span><span class="pun">=</span><span class="atv">"horizontal"</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:Repeater</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"rpGrafico"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"100%"</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:Panel</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"250"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"200"</span><span class="pln"> </span><span class="atn">layout</span><span class="pun">=</span><span class="atv">"absolute"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"pnGrafico"</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"{rpGrafico.currentItem.getItemAt(0).titulo}"</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">&lt;</span><span class="tag">mx:LineChart</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"grIndicador"</span><span class="pln"> </span><span class="atn">dataTipMode</span><span class="pun">=</span><span class="atv">"single"</span><span class="pln">
</span><span class="atn">showDataTips</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln"> </span><span class="atn">dataProvider</span><span class="pun">=</span><span class="atv">"{rpGrafico.currentItem}"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"95%"</span><span class="pln">
</span><span class="atn">height</span><span class="pun">=</span><span class="atv">"95%"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">verticalCenter</span><span class="pun">=</span><span class="atv">"0"</span><span class="pun">&gt;</span><span class="pln">
                        </span><span class="pun">&lt;</span><span class="tag">mx:horizontalAxis</span><span class="pun">&gt;</span><span class="pln">
                        </span><span class="pun">&lt;</span><span class="tag">mx:CategoryAxis</span><span class="pln"> </span><span class="atn">categoryField</span><span class="pun">=</span><span class="atv">"label"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">                              
                </span><span class="pun">&lt;/</span><span class="tag">mx:horizontalAxis</span><span class="pun">&gt;</span><span class="pln">                                                                            
                        </span><span class="pun">&lt;</span><span class="tag">mx:verticalAxis</span><span class="pun">&gt;</span><span class="pln">
                                </span><span class="pun">&lt;</span><span class="tag">mx:LinearAxis</span><span class="pln"> </span><span class="atn">baseAtZero</span><span class="pun">=</span><span class="atv">"false"</span><span class="pun">/&gt;</span><span class="pln">
                        </span><span class="pun">&lt;/</span><span class="tag">mx:verticalAxis</span><span class="pun">&gt;</span><span class="pln">                                                                              
                        </span><span class="pun">&lt;</span><span class="tag">mx:series</span><span class="pun">&gt;</span><span class="pln">                    
                        </span><span class="pun">&lt;</span><span class="tag">mx:LineSeries</span><span class="pln"> </span><span class="atn">form</span><span class="pun">=</span><span class="atv">"segment"</span><span class="pln"> </span><span class="atn">yField</span><span class="pun">=</span><span class="atv">"data2"</span><span class="pln"> </span><span class="atn">displayName</span><span class="pun">=</span><span class="atv">"Meta"</span><span class="pun">/&gt;</span><span class="pln">

                        </span><span class="pun">&lt;</span><span class="tag">mx:LineSeries</span><span class="pln"> </span><span class="atn">form</span><span class="pun">=</span><span class="atv">"segment"</span><span class="pln"> </span><span class="atn">yField</span><span class="pun">=</span><span class="atv">"data1"</span><span class="pln"> </span><span class="atn">displayName</span><span class="pun">=</span><span class="atv">"Indicador Técnico"</span><span class="pun">/&gt;</span><span class="pln">
                        </span><span class="pun">&lt;/</span><span class="tag">mx:series</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;/</span><span class="tag">mx:LineChart</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;/</span><span class="tag">mx:Panel</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;/</span><span class="tag">mx:Repeater</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="tag">mx:Tile</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Antes de executar o projeto e ver tudo funcionando legal, é necessário adicionar o código abaixo na segunda linha do código dentro da tag mx:Application</p>
<p><strong>creationComplete=&#8221;load()&#8221;</strong></p>
<p>Deixando-a assim:</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Application</span><span class="pln"> </span><span class="atn">xmlns:mx</span><span class="pun">=</span><span class="atv">"http://www.adobe.com/2006/mxml"</span><span class="pln"> </span><span class="atn">layout</span><span class="pun">=</span><span class="atv">"absolute"</span><span class="pln"> </span><span class="atn">creationComplete</span><span class="pun">=</span><span class="atv">"load();"</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Execute o projeto, você deve obter um resultado igual a imagem abaixo.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12186/igormusardo_2.gif" alt="" /></p>
<p>Complementando?</p>
<p>Para incluir as legendas basta adicionar logo após o gráfico o código abaixo:</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Legend</span><span class="pln"> </span><span class="atn">dataProvider</span><span class="pun">=</span><span class="atv">"{grIndicador[0]}"</span><span class="pln"> </span><span class="atn">bottom</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">left</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">right</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"25"</span><span class="pun">/&gt;</span></code></em></pre>
</div>
<p><img src="http://conteudo.imasters.uol.com.br/12186/igormusardo_3.gif" alt="" /></p>
<p><em>Fonte: <a onclick="javascript:urchinTracker ('/outbound/article/www.pplware.com');" href="http://imasters.uol.com.br/artigo/12186/desenvolvimento/adobe_flex_-_como_colocar_graficos_em_repeater/" target="_blank">Imasters</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/adobe-flex-como-colocar-graficos-em-repeater/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Construindo aplicações ricas de internet com Adobe Flex 3 e ASP.NET</title>
		<link>http://www.debugando.com/construindo-aplicacoes-ricas-de-internet-com-adobe-flex-3-e-aspnet/</link>
		<comments>http://www.debugando.com/construindo-aplicacoes-ricas-de-internet-com-adobe-flex-3-e-aspnet/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 21:52:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=545</guid>
		<description><![CDATA[
Utilizarei o Visual Studio 2008 com o SQL Server 2005 e o banco de dados Northwind, porém os mesmos passos podem ser seguidos no Visual Studio 2005 com o SQL Server 2000.
Crie um novo projeto Web no Visual Studio, logo em seguida clique com o botão direito sobre a solução e escolha Add / New [...]]]></description>
			<content:encoded><![CDATA[<div id="strConteudo">
<p>Utilizarei o Visual Studio 2008 com o SQL Server 2005 e o banco de dados Northwind, porém os mesmos passos podem ser seguidos no Visual Studio 2005 com o SQL Server 2000.</p>
<p>Crie um novo projeto Web no Visual Studio, logo em seguida clique com o botão direito sobre a solução e escolha Add / New Item.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/01_adicionarnovoitem-300x216.png" alt="" /></p>
<p>Na janela que se abrirá, selecione o Item DataSet e atribua o nome DsTerritorio.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/02_novodataset-300x181.png" alt="" /></p>
<p>Com o DataSet criado, clique com o botão direito dentro da janela do DataSet, escolha Add / TableAdapter, abrirá uma janela solicitando qual conexão com o banco de dados será utilizado para a construção do TableAdapter, crie a conexão com o SQL Server e salve com o nome NorthwindConn e clique em Next.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/03_adicionartableadapter-300x216.png" alt="" /></p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/04_selecionarconexao-300x235.png" alt="" /></p>
<p>Na próxima janela selecione como o TableAdapter acessará o banco de dados, as opções possíveis são: SQL statements, criar nova Stored Procedure ou utilizar uma Stored Procedure já existente no banco de dados.</p>
<p>Deixe a opção Use SQL statements marcada e clique em Next.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/05_selecionarmodoacesso-300x235.png" alt="" /></p>
<p>A próxima janela é onde se insere o código SQL para o retorno dos dados, porém você pode utilizar o Query Builder, que é a ferramenta visual para construção de instruções SQL, portanto clique no botão Query Builder.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/06_entradasql-300x235.png" alt="" /></p>
<p>Após clicar no botão Query Builder, aparecerão duas janelas, a janela do próprio Query Builder e a janela de Add Table, a segunda janela já com as tabelas existentes no banco de dados.</p>
<p>Procure e selecione a tabela Region, em seguida, clique em Add. A tabela Region aparecerá no Query Builder.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/07_adicionartabelaquerybuilder-300x216.png" alt="" /></p>
<p>Clique em Close, em seguida, selecione as duas colunas da tabela Region (RegionID e RegionDescription). Agora clique em Execute Query.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/08_querybuilderregion-300x246.png" alt="" /></p>
<p>Se o resultado do Execute Query for igual à figura acima, clique em Ok. A próxima janela solicitará nomes para os métodos de Fill e Return que por padrão são Fill e GetData respectivamente.</p>
<p>Para a tabela Region, deixe os nomes sugeridos e clique em Next. A próxima janela exibirá o sumário da criação do TableAdapter. Clique em Finish.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/09_definirnomemetodo-300x235.png" alt="" /></p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/10_tableadaptercriado-300x235.png" alt="" /></p>
<p>Agora já é possível visualizar o TableAdapter dentro do DataSet dsTerritorio.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/11_datasetterritorio-300x216.png" alt="" /></p>
<p>Ainda dentro do DataSet dsTerritorio, crie outro TableAdapter. Novamente, clique com o botão direito dentro do DataSet, escolha Add / TableAdapter, escolha a conexão com a base de dados, também escolha Use SQL statements.</p>
<p>Na janela do Query Builder, adicione a tabela Territories, selecione todas as colunas. Na linha RegionID, insira o parâmetro @RegionID na coluna Filter. O parâmetro será responsável por aplicar o filtro de qual região o SQL retornará os territórios.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/12_querybuilderterritories-300x246.png" alt="" /></p>
<p>Na janela de definições dos métodos, acrescente a expressão ByRegionID, após Fill e GetData. Dessa maneira apenas pelo nome do método é possível saber que um parâmetro chamado RegionID é esperado.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/13_definirnomemetodoterritories-300x235.png" alt="" /></p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/14_datasetterritoriocompleto-300x216.png" alt="" /></p>
<p>Agora que concluiu a criação do DataSet dsTerritorio, crie o DataSet dsVendedor, e dentro dele crie um TableAdapter com o SQL abaixo.</p>
<div class="codigo">
<pre><em><code><span class="pln">SELECT  </span><span class="typ">EmployeeTerritories</span><span class="pun">.</span><span class="typ">EmployeeID</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">Employees</span><span class="pun">.</span><span class="typ">FirstName</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">' '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Employees</span><span class="pun">.</span><span class="typ">LastName</span><span class="pln"> AS </span><span class="typ">FullName</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">EmployeeTerritories</span><span class="pun">.</span><span class="typ">TerritoryID</span><span class="pln">
FROM </span><span class="typ">Employees</span><span class="pln"> INNER JOIN </span><span class="typ">EmployeeTerritories</span><span class="pln">
        ON </span><span class="typ">Employees</span><span class="pun">.</span><span class="typ">EmployeeID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">EmployeeTerritories</span><span class="pun">.</span><span class="typ">EmployeeID</span><span class="pln">
WHERE </span><span class="pun">(</span><span class="typ">EmployeeTerritories</span><span class="pun">.</span><span class="typ">TerritoryID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">@TerritoryID</span><span class="pun">)</span></code></em></pre>
</div>
<p><img src="http://conteudo.imasters.uol.com.br/12375/15_entradasqlemployees-300x235.png" alt="" /></p>
<p>Acrescente ByTerritoryID na definição dos métodos Fill e GetData.</p>
<p>Após clicar em Finish, o TableAdapter criado estará com os nomes DataTable1 e DataTable1TableAdapter, altere-os para Employee e EmployeeTableAdapter.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/16_tableadapteremployee.png" alt="" /></p>
<p>Crie um novo DataSet chamado dsCliente, e também crie um novo TableAdapter com o código abaixo.</p>
<div class="codigo">
<pre><em><code><span class="pln">SELECT  </span><span class="typ">Customers</span><span class="pun">.</span><span class="typ">CustomerID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Customers</span><span class="pun">.</span><span class="typ">CompanyName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">CustomerEmployee</span><span class="pun">.</span><span class="typ">EmployeeID</span><span class="pln">
FROM </span><span class="pun">(</span><span class="pln">SELECT </span><span class="typ">CustomerID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EmployeeID</span><span class="pln">
        FROM </span><span class="typ">Orders</span><span class="pln">
        GROUP BY </span><span class="typ">CustomerID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EmployeeID</span><span class="pun">)</span><span class="pln"> AS </span><span class="typ">CustomerEmployee</span><span class="pln"> INNER JOIN
        </span><span class="typ">Customers</span><span class="pln"> ON </span><span class="typ">CustomerEmployee</span><span class="pun">.</span><span class="typ">CustomerID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Customers</span><span class="pun">.</span><span class="typ">CustomerID</span><span class="pln">
WHERE </span><span class="pun">(</span><span class="typ">CustomerEmployee</span><span class="pun">.</span><span class="typ">EmployeeID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">@EmployeeID</span><span class="pun">)</span></code></em></pre>
</div>
<p>Para os nomes dos métodos Fill e GetDate, não esqueça de adicionar ByEmployeeID em ambos.</p>
<p>Como no TableAdapter de vendedores, os nomes deste TableAdapter também não estão corretos, altere-os para Customers e CustomersTableAdapter respectivamente.</p>
<p>Para concluir a construção dos DataSets, crie mais um chamado dsPedido e também crie um novo TableAdapter com o código abaixo.</p>
<div class="codigo">
<pre><em><code><span class="pln">SELECT </span><span class="typ">OrderID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">CustomerIR</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EmployeeID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">OrderDate</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ShippedDate</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">ShipName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ShipAddress</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ShipCity</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Shipcountry</span><span class="pln">
FROM </span><span class="typ">Orders</span><span class="pln">
WHERE </span><span class="pun">(</span><span class="typ">CustormerID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">@CustomerID</span><span class="pun">)</span><span class="pln"> AND
        </span><span class="pun">(</span><span class="typ">EmployeeID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">@EmployeeID</span><span class="pun">)</span></code></em></pre>
</div>
<p>Acrescente ByCustomerIDEmployeeID  aos métodos Fill e GetData e clique em Finalizar.</p>
<p>Agora crie o último TableAdapter chamado OrderDetails conforme a figura abaixo.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/17_sqlorderdetails-300x247.png" alt="" /></p>
<p>Após a criação de todos os DataSets (Território, Vendedor, Cliente e Pedido) o projeto deve estar conforme a figura abaixo.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/18_arquivosprojeto.png" alt="" /></p>
<p>Copie os seguintes arquivos do diretório de instalação do WebOrb (por padrão em c:\inetpub\wwwroot\weborb30) para o diretório do projeto .NET.</p>
<p><em>/weborb.config<br />
/bin/weborb.dll<br />
/WEB-INF</em></p>
<p>Adicione o código XML abaixo ao web.config do projeto .NET.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">configuration</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="pun">&lt;</span><span class="tag">system</span><span class="pln">.</span><span class="atn">web</span><span class="pun">&gt;</span><span class="pln">
   </span><span class="pun">&lt;</span><span class="tag">httpHandlers</span><span class="pun">&gt;</span><span class="pln">
     </span><span class="pun">&lt;</span><span class="tag">add</span><span class="pln"> </span><span class="atn">verb</span><span class="pun">=</span><span class="atv">"*"</span><span class="pln"> </span><span class="atn">path</span><span class="pun">=</span><span class="atv">"weborb.aspx"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"Weborb.ORBHttpHandler"</span><span class="pun">/&gt;</span><span class="pln">
     </span><span class="pun">&lt;</span><span class="tag">add</span><span class="pln"> </span><span class="atn">verb</span><span class="pun">=</span><span class="atv">"*"</span><span class="pln"> </span><span class="atn">path</span><span class="pun">=</span><span class="atv">"codegen.aspx"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="pln"> </span><span class="atv">"Weborb.Management.CodeGen.CodegeneratorHttpHandler"</span><span class="pun">/&gt;</span><span class="pln">
   </span><span class="pun">&lt;/</span><span class="tag">httpHandlers</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="pun">&lt;/</span><span class="tag">system</span><span class="pln">.</span><span class="atn">web</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="tag">configuration</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>É preciso referenciar o weborb.dll ao projeto, para isso no Solution Explorer do Visual Studio, clique duas vezes sobre a opção My Project, em seguida clique em References e depois em Add / References?</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/19_myproject-300x216.png" alt="" /></p>
<p>Clique na aba Browse, localize o diretório Bin do projeto, selecione o arquivo weborb.dll e clique em OK, salve o projeto e feche a janela My Project.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/20_weborb_dll-300x246.png" alt="" /></p>
<p>Clique com o botão direito sobre a solução e escolha Add / New Item, porém escolha Class e dê o nome de csFlex.vb.</p>
<p>Nesta classe serão criados os métodos de chamada e retorno dos DataSets e TableAdapters criados anteriormente, através desses métodos é que a comunicação entre o .NET e o Flex ocorrerá.</p>
<p>Insira o código abaixo ao arquivo csFlex.vb</p>
<div class="codigo">
<pre><em><code><span class="typ">Imports</span><span class="pln"> </span><span class="typ">Weborb</span><span class="pun">.</span><span class="typ">Service</span><span class="pln">

</span><span class="typ">Public</span><span class="pln"> </span><span class="typ">Class</span><span class="pln"> csFlex

    </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> getRegion</span><span class="pun">()</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln">
        </span><span class="typ">Return</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> dsTerritorioTableAdapters</span><span class="pun">.</span><span class="typ">RegionTableAdapter</span><span class="pun">().</span><span class="typ">GetData</span><span class="pun">()</span><span class="pln">
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Function</span><span class="pln">

    </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> getTerritories</span><span class="pun">(</span><span class="typ">ByVal</span><span class="pln"> </span><span class="typ">RegionID</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln">
        </span><span class="typ">Return</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> dsTerritorioTableAdapters</span><span class="pun">.</span><span class="typ">TerritoriesTableAdapter</span><span class="pun">().</span><span class="typ">GetDataByRegionID</span><span class="pun">(</span><span class="typ">RegionID</span><span class="pun">)</span><span class="pln">
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Function</span><span class="pln">

    </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> getEmployee</span><span class="pun">(</span><span class="typ">ByVal</span><span class="pln"> </span><span class="typ">TerritoryID</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln">
        </span><span class="typ">Return</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> dsVendedorTableAdapters</span><span class="pun">.</span><span class="typ">EmployeeTableAdapter</span><span class="pun">().</span><span class="typ">GetDataByTerritoryID</span><span class="pun">(</span><span class="typ">TerritoryID</span><span class="pln">
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Function</span><span class="pln">

    </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> getCustomers</span><span class="pun">(</span><span class="typ">ByVal</span><span class="pln"> </span><span class="typ">EmployeeID</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln">
        </span><span class="typ">Return</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> dsClienteTableAdapters</span><span class="pun">.</span><span class="typ">CustomersTableAdapter</span><span class="pun">().</span><span class="typ">GetDataByEmployeeID</span><span class="pun">(</span><span class="typ">EmployeeID</span><span class="pun">)</span><span class="pln">
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Function</span><span class="pln">

    </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> getOrders</span><span class="pun">(</span><span class="typ">ByVal</span><span class="pln"> </span><span class="typ">CustomerID</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ByVal</span><span class="pln"> </span><span class="typ">EmployeeID</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln">
        </span><span class="typ">Return</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> dsPedidoTableAdapters</span><span class="pun">.</span><span class="typ">OrdersTableAdapter</span><span class="pun">().</span><span class="typ">GetDataByCustomerIDEmployeeID</span><span class="pun">(</span><span class="typ">CustomerID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EmployeeID</span><span class="pun">)</span><span class="pln">
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Function</span><span class="pln">

    </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> getOrderDetails</span><span class="pun">(</span><span class="typ">ByVal</span><span class="pln"> </span><span class="typ">OrderID</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> </span><span class="typ">DataTable</span><span class="pln">
        </span><span class="typ">Return</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> dsPedidoTableAdapters</span><span class="pun">.</span><span class="typ">OrderDetailsTableAdapter</span><span class="pun">().</span><span class="typ">GetDataByOrderID</span><span class="pun">(</span><span class="typ">OrderID</span><span class="pun">)</span><span class="pln">
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Function</span><span class="pln">

</span><span class="typ">End</span><span class="pln"> </span><span class="typ">Class</span></code></em></pre>
</div>
<p>Salve e feche o arquivo csFlex, agora compile o projeto. Caso o Visual Studio sinalize algum erro, volte e execute os passos novamente.</p>
<p>Antes de criar a interface no Adobe Flex, crie a aplicação Web no Internet Information Services (IIS) com o nome do projeto, verifique se ao acessar o endereço através do navegador uma página em branco é exibida.</p>
<p>Agora já com a aplicação web configurada no IIS, abra o Adobe Flex Builder 3, adicione um novo projeto (File / New / Flex Project).</p>
<p>Agora defina o nome do Projeto, se a opção Use default location estiver marcada, desmarque-a e localize o endereço do projeto .NET e dentro da pasta do projeto crie uma nova pasta chamada FlexSrc. O Project location do Flex deve ficar como a figura abaixo. A opção de Application type deixe marcado Web Application, e em Server technology selecione ASP.NET. Clique em Next.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/21_definirnomeprojeto-300x267.png" alt="" /></p>
<p>Na próxima janela, na opção Server selecione Use Internet Information Services (IIS), em Web application root informe o diretório raiz da aplicação web definida no IIS e no campo Web application URL informe o endereço da aplicação no IIS. Após clicar no botão Validate Configuration, na parte superior da janela o Flex Builder deve ser informar: &#8220;The web application root and URL are valid&#8221;, caso apareça outra mensagem, os endereços informados não estão corretos, corrija antes de prosseguir.</p>
<p>Na mesma janela, um pouco abaixo está definida a pasta bin-debug como local a serem salvos os arquivos Flex compilados, deixe o nome que o Builder sugeriu e clique Next.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/22_definirservidor-300x267.png" alt="" /></p>
<p>Na última janela de configuração do projeto Flex, é possível definir qual a pasta onde o Flex Builder salvará os arquivos fontes, bem como qual o nome do primeiro arquivo do projeto a ser criado.</p>
<p>Deixe os campos preenchidos como o Builder sugeriu e clique em Finish. Após alguns segundos o Adobe Flex Builder 3 exibirá o arquivo ArtigoFlex.mxml pronto para o início da construção da interface da aplicação.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/23_adobeflexbuilder-300x216.png" alt="" /></p>
<p>Porém antes começar a codificar é necessário incluir um argumento de compilação ao projeto, pois sem esse argumento o Flex não conseguirá acessar os métodos construídos na classe csFlex. Para incluir o argumento, clique com o botão direito sobre o nome do projeto no Flex Navigator e em seguida clique em Properties. Com a janela de propriedades aberta, clique sobre a opção Flex Compiler, e insira o argumento após o argumento ?locale en_US</p>
<div class="codigo">
<pre><code><span class="pun">-</span><span class="pln">services c</span><span class="pun">:\</span><span class="typ">Inetpub</span><span class="pun">\</span><span class="pln">wwwroot</span><span class="pun">\</span><span class="pln">weborb30</span><span class="pun">\</span><span class="pln">web</span><span class="pun">-</span><span class="pln">inf</span><span class="pun">\</span><span class="pln">flex</span><span class="pun">\</span><span class="pln">services</span><span class="pun">-</span><span class="pln">config</span><span class="pun">.</span><span class="pln">xml</span></code></pre>
</div>
<p><img src="http://conteudo.imasters.uol.com.br/12375/24_propriedadeflexcompiler-300x230.png" alt="" /></p>
<p>Após inserir o argumento services, clique em OK.</p>
<p>Agora com o projeto corretamente configurado e pronto para comunicar com o .NET é possível iniciar a construção da interface, para tanto crie um painel, entre as tags , com o título Painel de Vendas, esse painel terá um tamanho ajustável conforme as dimensões do navegador do cliente, para isso configure as propriedades left, right, top e bottom, todos com o valor 10.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Panel</span><span class="pln"> </span><span class="atn">layout</span><span class="pun">=</span><span class="atv">"absolute"</span><span class="pln"> </span><span class="atn">left</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">right</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">top</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">bottom</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"Painel de Vendas"</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="tag">mx:Panel</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>É possível verificar como o projeto está ficando, bastar clicar no Play.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/25_executaraplicacaoflex-300x36.png" alt="" /></p>
<p>Dentro do painel, crie um canvas na cor cinza.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Canvas</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"42"</span><span class="pln"> </span><span class="atn">left</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">top</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">right</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">backgroundColor</span><span class="pun">=</span><span class="atv">"#F3F3F3"</span><span class="pln"> </span><span class="atn">borderStyle</span><span class="pun">=</span><span class="atv">"none"</span><span class="pln"> </span><span class="atn">borderThickness</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">borderColor</span><span class="pun">=</span><span class="atv">"#C2BEBE"</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">&lt;/</span><span class="tag">mx:Canvas</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Dentro do canvas coloque os labels e comboboxs que serão utilizados para selecionar região, território, vendedor e cliente, coloque também dentro do canvas o botão consultar.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Label</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"12"</span><span class="pln"> </span><span class="atn">text</span><span class="pun">=</span><span class="atv">"Região"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"-348"</span><span class="pun">/&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:ComboBox</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cbRegion"</span><span class="pln"> </span><span class="atn">labelField</span><span class="pun">=</span><span class="atv">"RegionDescription"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"89"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"-274"</span><span class="pun">&gt;&lt;/</span><span class="tag">mx:ComboBox</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:Label</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"12"</span><span class="pln"> </span><span class="atn">text</span><span class="pun">=</span><span class="atv">"Território"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"-194"</span><span class="pun">/&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:ComboBox</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cbTerritory"</span><span class="pln"> </span><span class="atn">labelField</span><span class="pun">=</span><span class="atv">"TerritoryDescription"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"89"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"-114"</span><span class="pun">&gt;&lt;/</span><span class="tag">mx:ComboBox</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:Label</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"12"</span><span class="pln"> </span><span class="atn">text</span><span class="pun">=</span><span class="atv">"Vendedor"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"-32"</span><span class="pun">/&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:ComboBox</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cbEmployee"</span><span class="pln"> </span><span class="atn">labelField</span><span class="pun">=</span><span class="atv">"FullName"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"89"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"49"</span><span class="pun">&gt;&lt;/</span><span class="tag">mx:ComboBox</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:Label</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"12"</span><span class="pln"> </span><span class="atn">text</span><span class="pun">=</span><span class="atv">"Cliente"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"124"</span><span class="pun">/&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:ComboBox</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cbCustomer"</span><span class="pln"> </span><span class="atn">labelField</span><span class="pun">=</span><span class="atv">"CompanyName"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"89"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"198"</span><span class="pun">&gt;&lt;/</span><span class="tag">mx:ComboBox</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:Button</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">label</span><span class="pun">=</span><span class="atv">"Consultar"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"119"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"310"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"btConsultar"</span><span class="pun">/&gt;</span></code></em></pre>
</div>
<p>A propriedade horizontalCenter define qual a distância em pixel que um objeto está do centro da página, valores negativos representam objetos a esquerda do centro da tela e valores positivos representam objetos a direita, os valores definidos garantem que os objetos estarão sempre centralizados.</p>
<p>labelField é a propriedade que define qual o campo que será exibido como label do combobox. O Adobe Flex trabalha de maneira diferente do .NET quando o assunto é combobox ou dropdownlist, pois no .NET é possível definir apenas dois valores ao dropdownlist, o datatextfield e o datavalueFfeld, já no Adobe Flex só se define qual será o valor de exibição do combobox, labelField, pois cada linha de opção do combobox é um objeto com propriedades. Essas propriedades são as colunas que retornaram do banco de dados, logo você não tem acesso a somente duas colunas como dropdownlist, você tem acesso a todas as colunas que retornaram do banco de dados.</p>
<p>A propriedade Y define qual a distância que o objeto tem do topo do componente ao qual ele está pertencendo, neste caso, y=&#8221;12&#8243; diz ao Flex que o label está a 12 pixel do topo do canvas.</p>
<p>Após o canvas inclua um datagrid onde serão exibidos os pedidos resultantes da consulta ao banco de dados.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:DataGrid</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"dgPedido"</span><span class="pln"> </span><span class="atn">right</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">left</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">top</span><span class="pun">=</span><span class="atv">"55"</span><span class="pln"> </span><span class="atn">bottom</span><span class="pun">=</span><span class="atv">"10"</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:columns</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Detalhes"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"85"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Data Pedido"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"OrderDate"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Data Entrega"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"ShippedDate"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Entregue para"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"ShipName"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Endereço"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"ShipAdress"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Cidade"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"ShipCity"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"País"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"ShipCountry"</span><span class="pun">/&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="tag">mx:columns</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="tag">mx:DataGrid</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Para fazer a comunicação entre a interface Flex e a aplicação server-side .NET utilize o componente RemoteObject do Adobe Flex 3.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:RemoteObject</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"roNet"</span><span class="pln"> </span><span class="atn">destination</span><span class="pun">=</span><span class="atv">"GenericDestination"</span><span class="pln">
        </span><span class="atn">source</span><span class="pun">=</span><span class="atv">"ArtigoFlex.csFlex"</span><span class="pln"> </span><span class="atn">showBusyCursor</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln">
        </span><span class="atn">fault</span><span class="pun">=</span><span class="atv">"faultHandler(event)"</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln">

        </span><span class="pun">&lt;</span><span class="tag">mx:method</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"getRegion"</span><span class="pln"> </span><span class="atn">result</span><span class="pun">=</span><span class="atv">"gotRegion(event)"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:method</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"getTerritories"</span><span class="pln"> </span><span class="atn">result</span><span class="pun">=</span><span class="atv">"gotTerritories(event)"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:method</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"getEmployee"</span><span class="pln"> </span><span class="atn">result</span><span class="pun">=</span><span class="atv">"gotEmployee(event)"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:method</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"getCustomers"</span><span class="pln"> </span><span class="atn">result</span><span class="pun">=</span><span class="atv">"gotCustomers(event)"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:method</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"getOrders"</span><span class="pln"> </span><span class="atn">result</span><span class="pun">=</span><span class="atv">"gotOrders(event)"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:method</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"getOrderDetails"</span><span class="pln"> </span><span class="atn">result</span><span class="pun">=</span><span class="atv">"gotOrderDetails(event)"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">

</span><span class="pun">&lt;/</span><span class="tag">mx:RemoteObject</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>A propriedade destination deve sempre ser &#8220;GenericDestination&#8221; para a comunicação através do weborb, a propriedade source deve ser preenchida com o nome do projeto .NET e a classe que será acessada, então neste caso será &#8220;ArtigoFlex.csFlex&#8221;.</p>
<p>A propriedade showBusyCursor seta se será exibido ou não o relógio como cursor do mouse enquanto alguma requisição ao .NET estiver sendo feita. E finalmente, fault define qual função será disparada caso algum erro ocorra durante alguma requisição do .NET.</p>
<p>Os métodos (</p>
<p>A propriedade result define qual função será disparada após o retorno da requisição ao .NET.</p>
<p>É necessário agora construir as funções, faultHandler, gotRegion, gotTerritories, gotEmployee, gotCustomers, gotOrders e gotOrderDetails. As funções são escritas na linguagem Action Script 3.0</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Script</span><span class="pun">&gt;</span><span class="pln">
        &lt;![CDATA[
                import mx.rpc.events.ResultEvent;
                import mx.controls.Alert;
                import mx.rpc.events.FaultEvent;
        ]]&gt;
</span><span class="pun">&lt;/</span><span class="tag">mx:Script</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Nesta parte do código além do bloco das tags de inicio e fim de script, também estão declaradas as importações das bibliotecas ResultEvent, Alert e FaultEvent que serão utilizadas logo mais.</p>
<p>Agora crie a função faultHandler</p>
<div class="codigo">
<pre><em><code><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> faultHandler</span><span class="pun">(</span><span class="kwd">event</span><span class="pun">:</span><span class="typ">FaultEvent</span><span class="pun">):</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        </span><span class="typ">Alert</span><span class="pun">.</span><span class="pln">show</span><span class="pun">(</span><span class="kwd">event</span><span class="pun">.</span><span class="pln">fault</span><span class="pun">.</span><span class="pln">faultString</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Erro"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></code></em></pre>
</div>
<p>A função faultHandler recebe um parâmetro do tipo FaultEvent que será exibido para o usuário através do Alert.show quando algum erro ocorrer durante a requisição ao .NET.</p>
<p>Agora crie os métodos de preenchimento dos valores do combobox região.</p>
<div class="codigo">
<pre><em><code><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> bindRegion</span><span class="pun">():</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        roNet</span><span class="pun">.</span><span class="pln">getRegion</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gotRegion</span><span class="pun">(</span><span class="kwd">event</span><span class="pun">:</span><span class="typ">ResultEvent</span><span class="pun">):</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        cbRegion</span><span class="pun">.</span><span class="pln">dataProvider </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">.</span><span class="pln">result</span><span class="pun">;</span><span class="pln">
        cbRegion</span><span class="pun">.</span><span class="pln">selectedIndex </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
        bindTerritories</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span></code></em></pre>
</div>
<p>No código acima foram criadas duas funções, bindRegion e gotRegion. A função bindRegion chama o método getRegion do remote object roNet.</p>
<p>Após o retorno da requisição ao método roNet.getRegion, a função gotRegion é disparada recebendo um parâmetro do tipo ResultEvent que contém o retorno do método getRegion, o retorno é associado como dataProvider do combobox cbRegion, em seguida é selecionado o índice zero dos dados retornados. Após a seleção do índice, a função bindTerritories() é disparada.</p>
<div class="codigo">
<pre><em><code><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> bindTerritories</span><span class="pun">():</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        roNet</span><span class="pun">.</span><span class="pln">getTerritories</span><span class="pun">(</span><span class="pln">cbRegion</span><span class="pun">.</span><span class="pln">selectedItem</span><span class="pun">.</span><span class="typ">RegionID</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gotTerritories</span><span class="pun">(</span><span class="kwd">event</span><span class="pun">:</span><span class="typ">ResultEvent</span><span class="pun">):</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        cbTerritory</span><span class="pun">.</span><span class="pln">dataProvider </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">.</span><span class="pln">result</span><span class="pun">;</span><span class="pln">
        cbTerritory</span><span class="pun">.</span><span class="pln">selectedIndex </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
        bindEmployee</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span></code></em></pre>
</div>
<p>Assim como a função bindRegion, bindTerritories chama um método do remote object roNet, porém agora o método chamado é o getTerritories, esse método espera como parâmetro o código da região, por isso o parâmetro informado é o cbRegion.selectedItem.RegionID. RegionID é uma propriedade que o dataProvider do cbRegion passou a ter após a atribuição do event.result. Abaixo estão as demais funções para a preparação dos comboboxs.</p>
<div class="codigo">
<pre><em><code><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> bindEmployee</span><span class="pun">():</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        roNet</span><span class="pun">.</span><span class="pln">getEmployee</span><span class="pun">(</span><span class="pln">cbTerritory</span><span class="pun">.</span><span class="pln">selectedItem</span><span class="pun">.</span><span class="typ">TerritoryID</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gotEmployee</span><span class="pun">(</span><span class="kwd">event</span><span class="pun">:</span><span class="typ">ResultEvent</span><span class="pun">):</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        cbEmployee</span><span class="pun">.</span><span class="pln">dataProvider </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">.</span><span class="pln">result</span><span class="pun">;</span><span class="pln">
        cbEmployee</span><span class="pun">.</span><span class="pln">selectedIndex </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
        bindCustomers</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">       

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> bindCustomers</span><span class="pun">():</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        roNet</span><span class="pun">.</span><span class="pln">getCustomers</span><span class="pun">(</span><span class="pln">cbEmployee</span><span class="pun">.</span><span class="pln">selectedItem</span><span class="pun">.</span><span class="typ">EmployeeID</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gotCustomers</span><span class="pun">(</span><span class="kwd">event</span><span class="pun">:</span><span class="typ">ResultEvent</span><span class="pun">):</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        cbCustomer</span><span class="pun">.</span><span class="pln">dataProvider </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">.</span><span class="pln">result</span><span class="pun">;</span><span class="pln">
        cbCustomer</span><span class="pun">.</span><span class="pln">selectedIndex </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></code></em></pre>
</div>
<p>Para que quando o usuário acesse a aplicação os comboboxs já sejam preenchidos é necessário definir a propriedade creationComplete na tag mx:Application.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Application</span><span class="pln"> </span><span class="atn">xmlns:mx</span><span class="pun">=</span><span class="atv">"http://www.adobe.com/2006/mxml"</span><span class="pln"> </span><span class="atn">layout</span><span class="pun">=</span><span class="atv">"absolute"</span><span class="pln"> </span><span class="atn">creationComplete</span><span class="pun">=</span><span class="atv">"bindRegion()"</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Com essa propriedade definida, depois de criada a aplicação, a função bindRegion será disparada iniciando assim a população de todos os comboboxs, pois eles estão aninhados.</p>
<p>Também é preciso configurar os comboboxs para que depois de alterada a seleção de um dos filtros, os outros sejam alterados também, para isso será utilizada a propriedade change.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:ComboBox</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cbRegion"</span><span class="pln"> </span><span class="atn">labelField</span><span class="pun">=</span><span class="atv">"RegionDescription"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"89"</span><span class="pln"> </span><span class="atn">change</span><span class="pun">=</span><span class="atv">"bindTerritories()"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"-274"</span><span class="pun">&gt;&lt;/</span><span class="tag">mx:ComboBox</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:ComboBox</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cbTerritory"</span><span class="pln"> </span><span class="atn">labelField</span><span class="pun">=</span><span class="atv">"TerritoryDescription"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"89"</span><span class="pln"> </span><span class="atn">change</span><span class="pun">=</span><span class="atv">"bindEmployee()"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"-114"</span><span class="pun">&gt;&lt;/</span><span class="tag">mx:ComboBox</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:ComboBox</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cbEmployee"</span><span class="pln"> </span><span class="atn">labelField</span><span class="pun">=</span><span class="atv">"FullName"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"89"</span><span class="pln"> </span><span class="atn">change</span><span class="pun">=</span><span class="atv">"bindCustomers()"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"49"</span><span class="pun">&gt;&lt;/</span><span class="tag">mx:ComboBox</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Agora faça a população da datagrid,</p>
<div class="codigo">
<pre><em><code><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> bindOrders</span><span class="pun">():</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        roNet</span><span class="pun">.</span><span class="pln">getOrders</span><span class="pun">(</span><span class="pln">cbCustomer</span><span class="pun">.</span><span class="pln">selectedItem</span><span class="pun">.</span><span class="typ">CustomerID</span><span class="pun">,</span><span class="pln">cbEmployee</span><span class="pun">.</span><span class="pln">selectedItem</span><span class="pun">.</span><span class="typ">EmployeeID</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gotOrders</span><span class="pun">(</span><span class="kwd">event</span><span class="pun">:</span><span class="typ">ResultEvent</span><span class="pun">):</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        dgPedido</span><span class="pun">.</span><span class="pln">dataProvider </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">.</span><span class="pln">result</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></code></em></pre>
</div>
<p>Para que a função bindOrders seja disparada ao clicar o botão Consultar, defina a propriedade click do botão btConsultar.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:Button</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">label</span><span class="pun">=</span><span class="atv">"Consultar"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"119"</span><span class="pln"> </span><span class="atn">click</span><span class="pun">=</span><span class="atv">"bindOrders()"</span><span class="pln"> </span><span class="atn">horizontalCenter</span><span class="pun">=</span><span class="atv">"310"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"btConsultar"</span><span class="pun">/&gt;</span></code></em></pre>
</div>
<p>Para finalizar o projeto, crie a estrutura para exibir os detalhes dos pedidos. Para isso crie uma TitleWindow, em File / New / MXML Component, defina o nome de orderDetails, baseado em TitleWindow</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/26_criarnovocomponente-300x284.png" alt="" /></p>
<p>Utilize o código abaixo para a TitleWindow orderDetails.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"utf-8"</span><span class="pun">?&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:TitleWindow</span><span class="pln"> </span><span class="atn">xmlns:mx</span><span class="pun">=</span><span class="atv">"http://www.adobe.com/2006/mxml"</span><span class="pln"> </span><span class="atn">layout</span><span class="pun">=</span><span class="atv">"absolute"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"730"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"420"</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"Detalhes do Pedido"</span><span class="pln"> </span><span class="atn">showCloseButton</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln"> </span><span class="atn">close</span><span class="pun">=</span><span class="atv">"{PopUpManager.removePopUp(this)}"</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:Script</span><span class="pun">&gt;</span><span class="pln">
        &lt;![CDATA[
                import mx.managers.PopUpManager;
                import mx.events.CloseEvent;
        ]]&gt;
</span><span class="pun">&lt;/</span><span class="tag">mx:Script</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:DataGrid</span><span class="pln"> </span><span class="atn">left</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">right</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">top</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">bottom</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"dgOrderDetails"</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:columns</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Cód."</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"ProductID"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Produto"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"ProductName"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Preço Un."</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"UnitPrice"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Qtde"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"Quantity"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Desconto"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"Discount"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Total"</span><span class="pln"> </span><span class="atn">dataField</span><span class="pun">=</span><span class="atv">"Total"</span><span class="pun">/&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="tag">mx:columns</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="tag">mx:DataGrid</span><span class="pun">&gt;</span><span class="pln">  
</span><span class="pun">&lt;/</span><span class="tag">mx:TitleWindow</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Crie as funções para a população da TitleWindow orderDetails dentro do script do arquivo ArtigoFlex.mxml</p>
<div class="codigo">
<pre><em><code><span class="kwd">import</span><span class="pln"> mx</span><span class="pun">.</span><span class="pln">managers</span><span class="pun">.</span><span class="typ">PopUpManager</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> bindOrderDetails</span><span class="pun">():</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        roNet</span><span class="pun">.</span><span class="pln">getOrderDetails</span><span class="pun">(</span><span class="pln">dgPedido</span><span class="pun">.</span><span class="pln">selectedItem</span><span class="pun">.</span><span class="typ">OrderID</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gotOrderDetails</span><span class="pun">(</span><span class="kwd">event</span><span class="pun">:</span><span class="typ">ResultEvent</span><span class="pun">):</span><span class="kwd">void</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">var</span><span class="pln"> popUp</span><span class="pun">:</span><span class="pln">orderDetails </span><span class="pun">=</span><span class="pln"> orderDetails</span><span class="pun">(</span><span class="typ">PopUpManager</span><span class="pun">.</span><span class="pln">createPopUp</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">,</span><span class="pln"> orderDetails</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">));</span><span class="pln">
        </span><span class="typ">PopUpManager</span><span class="pun">.</span><span class="pln">centerPopUp</span><span class="pun">(</span><span class="pln">popUp</span><span class="pun">);</span><span class="pln">
        popUp</span><span class="pun">.</span><span class="pln">dgOrderDetails</span><span class="pun">.</span><span class="pln">dataProvider </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">.</span><span class="pln">result</span><span class="pun">;</span><span class="pln">                                              
</span><span class="pun">}</span></code></em></pre>
</div>
<p>Altere a primeira coluna da datagrid dgPedido para o código abaixo para inserir o botão para exibir os detalhes do pedido.</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">mx:DataGridColumn</span><span class="pln"> </span><span class="atn">headerText</span><span class="pun">=</span><span class="atv">"Detalhes"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"85"</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:itemRenderer</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="tag">mx:Component</span><span class="pun">&gt;</span><span class="pln">                                          
        </span><span class="pun">&lt;</span><span class="tag">mx:HBox</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"100%"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"100%"</span><span class="pln"> </span><span class="atn">horizontalAlign</span><span class="pun">=</span><span class="atv">"center"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="tag">mx:Button</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"80"</span><span class="pln"> </span><span class="atn">label</span><span class="pun">=</span><span class="atv">"Detalhes"</span><span class="pln"> </span><span class="atn">click</span><span class="pun">=</span><span class="atv">"outerDocument.bindOrderDetails()"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"btDetalhes"</span><span class="pun">/&gt;</span><span class="pln">
        </span><span class="pun">&lt;/</span><span class="tag">mx:HBox</span><span class="pun">&gt;</span><span class="pln">                      
</span><span class="pun">&lt;/</span><span class="tag">mx:Component</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="tag">mx:itemRenderer</span><span class="pun">&gt;</span><span class="pln">                              
</span><span class="pun">&lt;/</span><span class="tag">mx:DataGridColumn</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Salve o projeto e execute, o resultado deve ser como o das figuras abaixo.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/27_datagridpreenchida-300x216.png" alt="" /></p>
<p><img src="http://conteudo.imasters.uol.com.br/12375/28_datagridorderdetailspreenchida-300x216.png" alt="" /></p>
<p>Baixe o <a href="http://www.igormusardo.com.br/wp-content/uploads/2009/01/fonte.rar" target="_blank">código fonte completo</a>.</p>
<p>Divirta-se.</p>
<p><span class="c4">Publicado originalmente em <em><a href="http://www.igormusardo.com.br/2009/01/26/construindo-aplicacoes-ricas-de-internet-com-adobe-flex-3-e-aspnet">http://www.igormusardo.com.br</a></em></span></p>
<p><em>Fonte: <a onclick="javascript:urchinTracker ('/outbound/article/www.pplware.com');" href="http://imasters.uol.com.br/artigo/12375/aspnet/construindo_aplicacoes_ricas_de_internet_com_adobe_flex_3_e_aspnet/" target="_blank">Imasters</a></em></div>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/construindo-aplicacoes-ricas-de-internet-com-adobe-flex-3-e-aspnet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

