Eu uso assim: <s:DataGrid id="gridProdutos" keyUp="validakey(event)" width="100%" height="100%" requestedRowCount="4"> <s:columns> <s:ArrayList> <s:GridColumn dataField="idproduto" width="150" headerText="EAN"></s:GridColumn> <s:GridColumn dataField="descricao" headerText="Nome"></s:GridColumn> <s:GridColumn dataField="apresentacao" headerText="Apresentação"></s:GridColumn> <s:GridColumn dataField="principio" headerText="Principio Ativo"></s:GridColumn> <s:GridColumn dataField="razao_social" width="250" headerText="Industria"></s:GridColumn> <s:GridColumn dataField="nometipoproduto" width="150" headerText="Tipo Produto"></s:GridColumn> <s:GridColumn dataField="selecionar" width="40" headerText=""> <s:itemRenderer> <fx:Component> <s:GridItemRenderer clipAndEnableScrolling="true" > <fx:Script> <![CDATA[
override public function set data(value:Object):void { super.data = value; // Check to see if the data property is null. if (value== null) return; // If the data property is not null, // set the CheckBox control appropriately.. if(value.selecionar == true) { callCheckBox.selected = true; }else { callCheckBox.selected = false; } } private function valueChange():void { data.selecionar = callCheckBox.selected; outerDocument.todosProdutos.selected = false; } ]]> </fx:Script> <s:HGroup left="5" top="9" right="5" verticalAlign="baseline"> <s:CheckBox id="callCheckBox" click="valueChange()" selected="{data.selecionar}"/> </s:HGroup> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> </s:ArrayList> </s:columns> </s:DataGrid> Ai se eu quiser que quando selecionar ele faça alguma coisa na tela principal, ai eu coloco outerDocument.funcao() 2013/5/27 Fredy Gadotti <fredy.gado...@gmail.com> > Esse problema é porque o DataGrid recicla os itens para melhorar > performance, se seu dataProvider tem 100 itens e só mostra 10 por vez, ele > irá criar 10 e reaproveitar os 10 cada vez que der scroll. > > Procura por itemRenderer recycleChildren e pela interface IDataRenderer e > IListaDataRenderer, só dar override em alguns métodos usando a > implementação básica que provavelmente já estará com seu problema resolvido. > > Abraço, > > Fredy > > > 2013/5/27 Rafael Bandeira Rodrigues <rafab...@gmail.com> > >> isolei o componente como um novo projeto e para minha surpresa o problema >> acontece quando o grid tem scroll. É algo na renderização... Segue o código >> >> <?xml version="1.0" encoding="utf-8"?> >> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" >> xmlns:s="library://ns.adobe.com/flex/spark" >> xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" >> minHeight="600" >> creationComplete="creationCompleteHandler(event)"> >> <fx:Script> >> <![CDATA[ >> import mx.collections.ArrayCollection; >> import mx.controls.Alert; >> import mx.events.FlexEvent; >> import mx.rpc.events.FaultEvent; >> import mx.rpc.events.ResultEvent; >> import spark.events.GridEvent; >> public const END_POINT:String = "http://{server.name >> }:{server.port}/flex2gateway/"; >> [Bindable] private var dataResult:ArrayCollection = new >> ArrayCollection(); >> [Bindable] private var idManufacturer:uint = 0; >> private function getAllResultHandler(event:ResultEvent):void { >> dataResult = event.result as ArrayCollection; >> } >> private function faultHandler(event:FaultEvent):void { >> Alert.show(event.fault.rootCause.cause.errorMessage.faultString, "PCCel >> - Erro") ; >> } >> private function creationCompleteHandler(event:FlexEvent):void { >> ro.getAll(); >> } >> private function actionClickHandler(event:MouseEvent):void { >> switch(event.currentTarget.label.toUpperCase()) { >> case "ADICIONAR" : >> ro.save(nmManufacturer.text); >> break; >> case "ATUALIZAR" : >> ro.update(idManufacturer, nmManufacturer.text); >> break; >> } >> dg.selectedIndex = -1; >> } >> private function saveResultHandler(event:ResultEvent):void { >> nmManufacturer.text = ""; >> dataResult.addItem(event.result); >> dataResult.refresh(); >> dg.ensureCellIsVisible(dataResult.length - 1); >> dg.selectedIndex = -1; >> } >> private function filterFirst(item:Object):Boolean { >> return item["nome_fabricante"].match(new RegExp(searchField.text, 'i')) >> } >> private function search():void { >> if(searchField.text != "") filter(); >> else filterReset(); >> } >> private function filter():void { >> dataResult.filterFunction = filterFirst; >> dataResult.refresh(); >> } >> private function filterReset():void { >> dataResult.filterFunction = null; >> dataResult.refresh(); >> } >> private function editClickHandler(event:GridEvent):void { >> nmManufacturer.text = dg.selectedItem.nome_fabricante; >> idManufacturer = dg.selectedItem.codigo; >> nmManufacturer.setFocus(); >> btnCancelAction.visible = true; >> btnAction.label = "Atualizar"; >> } >> private function cancelActionClickHandler(event:MouseEvent):void { >> nmManufacturer.text = ""; >> nmManufacturer.errorString = ""; >> btnCancelAction.visible = false; >> btnAction.label = "Adicionar"; >> } >> private function updateResultHandler(event:ResultEvent):void { >> // TODO Auto-generated method stub >> } >> >> ]]> >> </fx:Script> >> <fx:Declarations> >> <s:RemoteObject id="ro" showBusyCursor="true" destination="ColdFusion" >> endpoint="{END_POINT}" fault="faultHandler(event)" >> source="components.screens.Manufacturer"> >> <s:method name="getAll" concurrency="multiple" >> result="getAllResultHandler(event)" /> >> <s:method name="save" concurrency="multiple" >> result="saveResultHandler(event)" /> >> <s:method name="update" concurrency="multiple" >> result="updateResultHandler(event)" /> >> </s:RemoteObject> >> </fx:Declarations> >> <s:TitleWindow width="600" height="340"> >> <s:layout> >> <s:VerticalLayout/> >> </s:layout> >> <s:controlBarContent> >> <s:Button id="btnDelete" label="Excluir" enabled="{dg.selectedIndex > >> -1}"/> >> <s:Spacer width="100%" height="10"/> >> <s:Button label="Ok"/> >> <s:Button label="Cancelar" /> >> </s:controlBarContent> >> <mx:Form width="100%" defaultButton="{btnAction}"> >> <mx:FormItem label="Nome do Fabricante:" direction="horizontal"> >> <s:TextInput id="nmManufacturer" width="225"/> >> <s:Button id="btnAction" label="Adicionar" >> click="actionClickHandler(event)"/> >> <s:Button id="btnCancelAction" label="Cancelar" visible="false" >> click="cancelActionClickHandler(event)" /> >> </mx:FormItem> >> </mx:Form> >> <s:Group width="100%" height="100%"> >> <s:Panel width="100%" height="100%"> >> <s:TextInput id="searchField" y="-27" right="5" width="210" >> prompt="Procurar..." change="search()"/> >> <s:DataGrid id="dg" width="100%" height="100%" >> dataProvider="{dataResult}" doubleClickEnabled="true" >> gridDoubleClick="editClickHandler(event)"> >> <s:columns> >> <s:ArrayList> >> <s:GridColumn dataField="nome_fabricante" headerText="Fabricante" /> >> <s:GridColumn dataField="codigo" visible="false" /> >> <s:GridColumn> >> <s:itemRenderer> >> <fx:Component> >> <s:GridItemRenderer> >> <s:CheckBox id="deleteAction" verticalCenter="0" horizontalCenter="0" /> >> </s:GridItemRenderer> >> </fx:Component> >> </s:itemRenderer> >> </s:GridColumn> >> </s:ArrayList> >> </s:columns> >> </s:DataGrid> >> </s:Panel> >> </s:Group> >> >> </s:TitleWindow> >> >> </s:Application> >> >> >> Obrigado, >> >> Rafael Bandeira Rodrigues >> Chief Executive Officer >> FlagNet - Soluções em Tecnologia >> http://www.flagnet.inf.br/ >> >> Adobe ColdFusion 8 Certified Expert >> Adobe ColdFusion MX 7 Certified Developer >> Adobe Certified Professional >> Adobe Certified Instructor >> Adobe Certified Expert >> Fusebox - BRASIL >> http://www.fusebox.com.br/ >> RafaBand - BlogSpot.com >> http://rafaband.blogspot.com/ >> FlagNet - Twiter >> http://twitter.com/flagnet/ >> >> "Pensar apenas ou desejar somente nunca levou ninguém a lugar nenhum. É >> necessário também a ação" - William Shakespeare >> >> >> Em 27 de maio de 2013 12:02, Helio Antonio Francisco Silva < >> helio.afsi...@gmail.com> escreveu: >> >> cara posta o codigo ai pra gente ver. pelo que entendi, quando voce clica >>> ele marca todos os multiplos de 7 e isso ? eu fiz um datagrid ontem que >>> lista 200 clientes e ele pode selecionar todos ou somente aqueles e ainda >>> fiz um filtro pro cara procurar e trazer somente os checkbox que o cara >>> selecionou. >>> coloca o codigo ae que eu vou te ajudar a resolver essa bronca. >>> >>> >>> 2013/5/27 Rafael Bandeira Rodrigues <rafab...@gmail.com> >>> >>>> Pessoal, estou com um datagrid, onde tenho 3 colunas, uma invisível que >>>> me trás o id do registrando banco, uma com o registro que é um nome e uma >>>> terceira que é um checkbox para ser marcado em caso de exclusão de dados. >>>> >>>> Ao clicar no checkbox 1 ele esta marcando os múltiplos de 7, marcando o >>>> 7, 14, 21, etc. O campo não tem nada nem dataField, não estou achando o >>>> problema, alguma dica?! >>>> >>>> >>>> -- >>>> Obrigado, >>>> >>>> Rafael Bandeira Rodrigues >>>> Chief Executive Officer >>>> FlagNet - Soluções em Tecnologia >>>> http://www.flagnet.inf.br/ >>>> >>>> Adobe ColdFusion 8 Certified Expert >>>> Adobe ColdFusion MX 7 Certified Developer >>>> Adobe Certified Professional >>>> Adobe Certified Instructor >>>> Adobe Certified Expert >>>> Fusebox - BRASIL >>>> http://www.fusebox.com.br/ >>>> RafaBand - BlogSpot.com >>>> http://rafaband.blogspot.com/ >>>> FlagNet - Twiter >>>> http://twitter.com/flagnet/ >>>> >>>> "Pensar apenas ou desejar somente nunca levou ninguém a lugar nenhum. É >>>> necessário também a ação" - William Shakespeare >>>> >>>> >>>> -- >>>> -- >>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com >>>> Para sair da lista, envie um email em branco para >>>> flexdev-unsubscr...@googlegroups.com >>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >>>> --- >>>> Você está recebendo esta mensagem porque se inscreveu no grupo >>>> "flexdev" dos Grupos do Google. >>>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, >>>> envie um e-mail para flexdev+unsubscr...@googlegroups.com. >>>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out >>>> . >>>> >>>> >>>> >>> >>> >>> >>> -- >>> *Hélio Antonio Francisco 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 flexdev@googlegroups.com >>> Para sair da lista, envie um email em branco para >>> flexdev-unsubscr...@googlegroups.com >>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >>> --- >>> Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" >>> dos Grupos do Google. >>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, >>> envie um e-mail para flexdev+unsubscr...@googlegroups.com. >>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out. >>> >>> >>> >> >> -- >> -- >> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com >> Para sair da lista, envie um email em branco para >> flexdev-unsubscr...@googlegroups.com >> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >> --- >> Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" >> dos Grupos do Google. >> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, >> envie um e-mail para flexdev+unsubscr...@googlegroups.com. >> Para obter mais opções, acesse https://groups.google.com/groups/opt_out. >> >> >> > > -- > -- > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com > Para sair da lista, envie um email em branco para > flexdev-unsubscr...@googlegroups.com > Mais opções estão disponíveis em http://groups.google.com/group/flexdev > --- > Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" > dos Grupos do Google. > Para cancelar a inscrição neste grupo e parar de receber seus e-mails, > envie um e-mail para flexdev+unsubscr...@googlegroups.com. > Para obter mais opções, acesse https://groups.google.com/groups/opt_out. > > > -- *Hélio Antonio Francisco 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 flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev --- Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos Grupos do Google. Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para flexdev+unsubscr...@googlegroups.com. Para obter mais opções, acesse https://groups.google.com/groups/opt_out.