Não precisei fazer cálculos de posição, resolvi de uma forma talvez mais
"criativa":
- ao iniciar o drag, apanho os dados do item arrastado
- no dragcomplete, faço um scan ao dataprovider da datagrid para descobrir a
posicao onde esse item caiu
- como gravo os dados na BD, faço um remotecall e faço os cálculos no
servidor para atribuir o novo rank ao item arrastado a reflectir as
alterações na tabela de dados (sei o rank de origem e rank de destino, o que
torna fácil).
Foi bastante linear o processo. Só fiquei na dúvida se existiria alguma
forma mais elegante a nível de AS. :-)
Obrigado de qualquer forma.
Realpak: já estás novamente a desenvolver flex?
Miguel Vaz
2008/10/2 realapak <[EMAIL PROTECTED]>
>
> Boas miguel,
>
> Eu acho que se não tiveres a location onde é feito o drop (x,y) não
> podes efectuar calculos para saber onde o objecto cai e
> consequentemente linha.
> Tens de receber o x e o y e verificar o estado corrente da grid e só
> depois colocar ou alterar o que quer que seja acho eu.
>
> On 1 Out, 23:45, "Miguel Vaz" <[EMAIL PROTECTED]> wrote:
> > Boa noite,
> >
> > Estou a resolver um problema para o qual me parece que exista algum
> processo
> > bem mais simples:
> >
> > - Tenho uma datagrid com dragEnabled="true" dragMoveEnabled="true"
> > dropEnabled="true"
> > - Pretendo apenas reordenar os seus items arrastando-os de posição.
> >
> > A datagrid faz isso nativamente, mas tenho um campo no dataprovider que é
> o
> > "rank", o qual quero actualizar sempre que algum item é movido de sítio.
> >
> > A forma que estou a utilizar para resolver é:
> >
> > Adicionar à datagrid dragDrop="cair(event);"
> >
> > private function cair(evt:DragEvent):void{
> >
> > var source:Object = evt.dragSource.dataForFormat('items') as Array; //
> com
> > isto sei os dados do item que movi
> >
> > // crio um loop que procura a posição na datagrid do item arrastado e
> > actualiza os ranks de todos os items maiores (em posição na datagrid),
> > incluindo o arrastado.
> >
> > }
> >
> > Como exemplo:
> >
> > Datagrid inicial:
> >
> > 1 noticia teste
> > 2 outra noticia
> > 3 ainda outra
> >
> > Arrasto a noticia de rank 3 para entre o rank 1 e rank 2, ficando:
> >
> > 1 noticia teste
> > 3 ainda outra
> > 2 outra noticia
> >
> > O loop vai procurar o item de rank 3, descobre que está na posicao 1 da
> > datagrid, actualiza o rank 3 para rank 2 e o rank 2 para rank 3. Vivem
> > felizes para sempre.
> >
> > Pergunto se existe alguma forma mais fácil de saber a posição onde o item
> é
> > deixado. Pelo que li nos docs e online, é sempre possivel saber o item
> > arrastado, de onde vem, para que componente vai, mas nada sobre a posição
> > onde é feito o drop.
> >
> > Pelo source code do datagrid, vejo que são feitos cálculos pela posição
> do
> > drop no x,y, mas parece-me um pouco desnecessário estar a tentar refazer
> > algo assim.
> >
> > Alguma sugestão diferente do meu método?
> >
> > Muito obrigado.
> >
> > Miguel Vaz
> >
>
--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade
Portuguesa de Desenvolvimento de RIAs - www.riapt.org" do Grupos Google.
Para enviar mensagens para este grupo, envie um email para
[email protected]
Para anular a inscrição neste grupo, envie um email para [EMAIL PROTECTED]
Para mais opções, visite este grupo em
http://groups.google.com/group/riapt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---