nossa nao sabia dessa reciclagem... deu pra ter uma ideia legal.
valeu Mario. 2010/12/28 Mário Júnior <[email protected]> > Acontece que os componentes baseados em lista (ListBased) possuem uma > arquitetura interessante onde eles reaproveitam os itemRenderers, > reciclando-os. > > Explicando de forma bem rapida: > - Se vc possue um grid com 1000 linhas, mas somente 10 estão exibidas, o > datagrid (ou qualquer outro list-based) irá criar só 12 renderers, e não os > 1000. Isso faz com q a performance do componente seja melhorada, afinal pra > q criar 988 renderers q nao sao exibidos??? > > - Agora vc me pergunta: "Mas pq criou 12 se só exibe 10?" Acontece q o > componente cria um renderer a mais "para baixo" e outro a mais "para cima" > para q o efeito de rolagem não fique prejudicado. > > > - E como os outros 988 registros são mostrados? > R: É aí q entra a "reciclagem de componentes". A cada vez q o componente > sofre uma rolagem, ele pega o objeto do data provider e seta no ultimo > renderer, e a partir do penultimo ele re-seta o item anterior no renderer de > cima. (ou de baixo qnd a rolagem é pra cima). > É uma "dança das cadeiras", onde o objeto do renderer 10 passa para o 9, o > do 9 passa para o 8, o do 8 passa para o 7... e assim respectivamente. > > É nessa hora q vc entende o porquê de sobrescrever o set data, pois nessa > 'dança das cadeiras' é q o set data é invocado para passar o novo item para > um renderer já criado, sucessivamente. > > > Tudo isso é feito diretamente pelo componente baseado em lista q usa os > renderers (todos q extendem de ListBased - datagrid, list, hosrizontallist, > etc...), mas isso no Flex 3.x > > Já no Flex 4.x SDK isso não é mais responsabilidade do componente > list-based, mas do Layout que o componente usa, isso qnd se ativa a opção > useVirtualLayout=true, onde a "mecânica" é um pouquinho mais complexa q a já > existente, mas muda de lugar. > Detalhe q no Flex4, para se ter uma "lista" com dados complexos, precisa > usar o DataGroup com o Layout apropriado, e não esquecer de usar > DefaultComplexItemRenderer como classe renderer. > > > Espero ter compreendido :) > > > []'s > > > > > > > Em 28 de dezembro de 2010 11:18, Pablo Souza <[email protected]>escreveu: > > Olá Helio! >> >> Todas as classes que implementam a interface mx.core.IDataRenderer >> suportam essa propriedade. >> >> No caso do exemplo que te enviei, a classe é a MXItemRenderer e você >> verá essa relação da seguinte forma: >> MXItemRenderer EXTENDS DataRenderer EXNTEDS DataRenderer IMPLEMENTS >> IDataRenderer. >> >> Caso você precise criar um item renderer ou item editor customizado >> basta fazer com que seu componente implemente a interface >> IDataRenderer. >> >> A propriedade data contêm todo o dataprovider da linha e não somente o >> valor para aquela coluna que você setou o item renderer. >> >> >> Abs! >> >> >> >> ------ >> Pablo Souza >> http://rectius.com.br >> @pablo_souza >> >> >> On Dec 28, 10:54 am, Helio Antonio Francisco Silva >> <[email protected]> wrote: >> > A unica diferença desse seu exemplo pro meu foi isso aqui >> > >> > * >> > >> > override* *public* *function* *set* data >> > Colocando essa funcao os valores aparecem, sem ela os valores vem >> nulos... >> > poderia me explicar o por que disso ? >> > >> > 2010/12/27 pablo.souza <[email protected]> >> > >> > >> > >> > >> > >> > > Crie seu componente com a classe MXDataGridItemRenderer, que perrmite >> > > você use componentes Spark como itemrenderes do mx DataGrid. >> > >> > > <s:MXDataGridItemRenderer >> > > xmlns:fx="http://ns.adobe.com/mxml/2009" >> > > xmlns:s="library://ns.adobe.com/flex/spark" >> > > xmlns:mx="library://ns.adobe.com/flex/mx" >> > > focusEnabled="true"> >> > > <fx:Script> >> > > <![CDATA[ >> > >> > > override public function set >> data(value:Object):void >> > > { >> > > super.data = value; >> > > } >> > >> > > ]]> >> > > </fx:Script> >> > >> > > <s:BorderContainer >> > > id="statusBorder" >> > > horizontalCenter="0" verticalCenter="0" >> > > width="8" height="8" cornerRadius="18" >> > > dropShadowVisible="false"/> >> > >> > > </s:MXDataGridItemRenderer> >> > >> > > Abs! >> > >> > > On Dec 27, 4:42 pm, Helio Antonio Francisco Silva >> > > <[email protected]> wrote: >> > > > Pessoal estou com uma baita dor de cabeça com o maldito itemrender >> no >> > > flex4. >> > > > To passando certinho como em uns exemplos na net e nao funciona. >> > >> > > > No flex3 eu fazia assim tambem era muito EASY e no flex 4 to tomando >> bola >> > > =( >> > > > alguem me ajuda por favor. >> > >> > > > <mx:DataGrid width="744" height="468" paddingRight="2" >> id="ContratosDG" >> > > > fontFamily="Verdana" fontSize="10" > >> > >> > > > <mx:columns> >> > >> > > > <mx:DataGridColumn fontFamily="Verdana" >> itemRenderer="components.legend" >> > > > fontSize="10" fontWeight="bold" headerText="Status" width="40" >> > > dataField=" >> > > > CSTATUS"/> >> > >> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10" >> fontWeight="bold" >> > > > headerText="Filial" width="40" dataField="FILIAL"/> >> > >> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10" >> fontWeight="bold" >> > > > headerText="Contrato" width="60" dataField="CONTRATO"/> >> > >> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10" >> fontWeight="bold" >> > > > headerText="Cliente" width="60" dataField="CODIGO"/> >> > >> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10" >> fontWeight="bold" >> > > > headerText="Nome" width="250" dataField="NOME"/> >> > >> > > > <mx:DataGridColumn fontFamily="Verdana" fontSize="10" >> fontWeight="bold" >> > > > headerText="Tipo Contrato" width="80" dataField="TIPOCONTRA"/> >> > >> > > > </mx:columns> >> > >> > > > </mx:DataGrid> >> > >> > > > Componente >> > >> > > > <?xml version="1.0" encoding="utf-8"?> >> > >> > > > <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" >> > >> > > > xmlns:s="library://ns.adobe.com/flex/spark" >> > >> > > > xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"> >> > >> > > > <fx:Declarations> >> > >> > > > <!-- Place non-visual elements (e.g., services, value objects) here >> --> >> > >> > > > </fx:Declarations> >> > >> > > > <fx:Script> >> > >> > > > <![CDATA[ >> > >> > > > *public* *var* nome:String = *new* String(); >> > >> > > > ]]> >> > >> > > > </fx:Script> >> > >> > > > <mx:Image height="15" width="15" /> >> > >> > > > </s:Group> >> > >> > > > -- >> > > > *Hélio Antonio Fransico Silva* >> > > > Desenvolvedor web >> > > > Certificado Flash developer >> > > > Certificado Flash Design >> > > > Certificado web developer >> > > > Consultor Microsiga / Totvs >> > > > Desenvolvedor ADVPL / ASP >> > > > Analista de sistemas e ERP Sênior. >> > >> > > -- >> > > Você recebeu esta mensagem porque está inscrito na lista "flexdev" >> > > Para enviar uma mensagem, envie um e-mail para >> [email protected] >> > > Para sair da lista, envie um email em branco para >> > > [email protected] >> > > Mais opções estão disponíveis emhttp:// >> groups.google.com/group/flexdev >> > >> > -- >> > *Hélio Antonio Fransico Silva* >> > Desenvolvedor web >> > Certificado Flash developer >> > Certificado Flash Design >> > Certificado web developer >> > Consultor Microsiga / Totvs >> > Desenvolvedor ADVPL / ASP >> > Analista de sistemas e ERP Sênior.- Hide quoted text - >> > >> > - Show quoted text - >> >> -- >> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >> Para enviar uma mensagem, envie um e-mail para [email protected] >> Para sair da lista, envie um email em branco para >> [email protected] >> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >> > > > > -- > Mario Junior > http://blog.mariojunior.com/ > @mariojunior > > -- > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > Para enviar uma mensagem, envie um e-mail para [email protected] > Para sair da lista, envie um email em branco para > [email protected] > Mais opções estão disponíveis em http://groups.google.com/group/flexdev > -- *Hélio Antonio Fransico Silva* Desenvolvedor web Certificado Flash developer Certificado Flash Design Certificado web developer Consultor Microsiga / Totvs Desenvolvedor ADVPL / ASP Analista de sistemas e ERP Sênior. -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [email protected] Mais opções estão disponíveis em http://groups.google.com/group/flexdev
