Valeu Julio obrigado pela resposta vou testar isso..

On 22 jan, 19:09, Júlio César Ködel <[email protected]> wrote:
> Uma coisa que vocês tem que ter noção é que o grid, ou qualquer outro
> componente de lista do Flex NÃO POSSUEM ITENS NEM LINHAS!
>
> Ele simplesmente apresenta os dados providos na propriedade dataProvider.
>
> Portanto, o que você quer fazer é simplesmente copiar um elemento do array
> para outra posição.
>
> Mas aí temos as pegadinhas. Rá! =)
>
> Arrays, por padrão, são imutáveis, ou seja, não é nada bom adicionar itens
> neles (já que eles alocam um espaço em memória com apenas um ponteiro e
> adicionar um item nestes caras implica, implicita ou explicitamente, em
> copiar todo o array antigo para uma nova localização na memória + o item a
> ser inserido).
>
> Por isso a grande maioria das operações feitas em listas no Flex são através
> do ArrayCollection, que são listas de dados onde novos dados podem ser
> adicionados mais facilmente (e há mecanismos internos para prover
> performance a esta operação).
>
> O grande problema é que cada item do ArrayCollection é um objeto. E o que é
> um objeto? Apenas um inteiro apontando para uma estrutura da memória. Então
> copiar o objeto para outra posição do array na verdade não o copia, apenas
> copia sua referência (o que implica que uma alteração no item original seja
> imediatamente replicada para os itens copiados já que eles são a mesma
> coisa, a mesma estrutura em memória).
>
> Para isso o ActionScript define uma interface para adicionar o método Clone
> em um objeto. Cabe a você, programador, implementar o mecanismo de clone na
> sua classe que implica, basicamente, em criar uma nova instância do tipo
> desejado e copiar cada uma das propriedades para esta nova instância,
> gerando assim uma cópia real do objeto.
>
> Então, vamos supor sua classe:
>
> public class MinhaClasse
> {
>   public var nome:String;
>   public var idade:int;
>
> }
>
> Ficaria assim:
>
> public class MinhaClasse
> {
>   public var nome:String;
>   public var idade:int;
>
>   public function clone():MinhaClasse
>   {
>     var copia:MinhaClasse = new MinhaClasse();
>
>     copia.nome = this.nome;
>     copia.idade = this.idade;
>     return copia;
>   }
>
> }
>
> Aí no teu grid, você poderia fazer:
>
> (grid.dataProvider as ArrayCollection).addItem(itemADuplicar.clone());
>
> E, pronto, você tem um item duplicado na sua estrutura de dados.
>
> Note, obviamente, que se sua classe tiver um atributo/propriedade que seja
> não primitivo, você deverá clonar este elemento também, ou seja, supondo que
> NOME seja uma classe sua composta pelos campos nome e sobrenome. Não
> adiantaria fazer copia.nome = this.nome porque, novamente, você estaria
> apenas duplicando o ponteiro. Neste caso o mesmo esquema deveria ser
> adotado: copia.nome = this.nome.clone();
>
> 2010/1/22 Lorenzi <[email protected]>
>
>
>
>
>
> > Boa tarde.
>
> > Seguinte minha duvida é essa tenho um  datagrid com tres colunas nome,
> > idade, duplicar(este sera um botao para o cara clicar) . Minha duvida
> > é como eu faço para clicar no duplicar e ele criar uma nova linha no
> > grid, copiando a linha clicada.
>
> > /*normal*/
> > Nome            idade      Duplicar
> > Marcelo           23            +
>
> > /*duplicado*/
> > Nome            idade      Duplicar
> > Marcelo           23            +
> > Marcelo           23            +
>
> > /*duplicado*/
> > Nome            idade      Duplicar
> > Marcelo           23            +
> > Marcelo           23            +
> > Marcelo           23            +
>
> > desta maneira.
>
> > Grato.
>
> > --
> > 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
>
> --
> []
> Júlio César Ködel G.

-- 
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

Responder a