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.


Responder a