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 <[email protected]> > 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 < > [email protected]> 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 <[email protected]> >> >>> 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 [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 >>> --- >>> 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 [email protected]. >>> 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 [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 >> --- >> 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 [email protected]. >> 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 [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 > --- > 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 [email protected]. > 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 [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 --- 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 [email protected]. Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
