Lançado Adianti Framework 7.6!
Clique aqui para saber mais
DataGrid ordenar por campo de associação Boa Noite à Todos, Estou usando em um DataGrid um campo por associação, funciona perfeitamente, ele converte o "id" da chave estrangeira pela descrição, tudo bem legal, inclusive a pesquisa (filtro) funciona também sem maiores problemas. Meu problema é com a ordenação, quero que a coluna seja ordenável, percebi que independentemente de você enviar asc ou desc, algo no adianti faz com...
MP
DataGrid ordenar por campo de associação  
Boa Noite à Todos,

Estou usando em um DataGrid um campo por associação, funciona perfeitamente, ele converte o "id" da chave estrangeira pela descrição, tudo bem legal, inclusive a pesquisa (filtro) funciona também sem maiores problemas. Meu problema é com a ordenação, quero que a coluna seja ordenável, percebi que independentemente de você enviar asc ou desc, algo no adianti faz com que colunas assim sejam sempre asc na ordenação, então na parte de ordenação ao invés de usar:

  1. <?php>
  2.         $order_XCD_INT_CONTINENTES = new TAction(array($this, 'onReload'));
  3.         $order_XCD_INT_CONTINENTES->setParameter('order', 'XCD_INT_CONTINENTES');       
  4.         $column_XCD_INT_CONTINENTES->setAction($order_XCD_INT_CONTINENTES); 
  5. <?>


Usei:

  1. <?php>
  2.         $order_XCD_INT_CONTINENTES = new TAction(array($this, 'onOrder'));
  3.         $order_XCD_INT_CONTINENTES->setParameter('order', 'XCD_INT_CONTINENTES');       
  4.         $column_XCD_INT_CONTINENTES->setAction($order_XCD_INT_CONTINENTES); 
  5. <?>


E a rotina "onOrder", segue abaixo:

  1. <?php
  2.     public function onOrder($param)
  3.     {
  4.         $last_direction TSession::getValue(self::class . '_last_direction');
  5.         $last_direction $last_direction == 'asc' 'desc' 'asc';
  6.         TSession::setValue(self::class . '_last_direction'$last_direction);
  7.         $param['direction'] = $last_direction;
  8.         $this->onReload($param);
  9.     }
  10. ?>


Dessa forma agora a cada clique na coluna a ordenação é feita corretamente asc e desc, porém não aparece a "setinha azul" indicando a forma da ordenação como nos demais campos do mesmo DataGrid.

Alguém tem alguma solução melhor do que a que usei para ordenar em casos de associação? e ainda sabem como fazer a "setinha azul" aparecer?

Desde já obrigado pela atenção.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (3)


NR

Se não me engano isso acontece porque há uma verificação pelo nome da coluna e o parâmetro "order" enviado. A imagem aparece quando as 2 opções são iguais, o que não ocorre neste caso.

Uma saída seria criar uma view cruzando as tabelas e retornando também essa coluna, sem precisar usar associação para isso.
MP

Tive mesmo que utilizar view, ai consegui trabalhar como gostaria, Obrigado.
PL

Também tenho essa dificuldade, usar view (select) vai contra até o que o framework se propõem.