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:
$order_XCD_INT_CONTINENTES = new TAction(array($this, 'onReload')); $order_XCD_INT_CONTINENTES->setParameter('order', 'XCD_INT_CONTINENTES'); $column_XCD_INT_CONTINENTES->setAction($order_XCD_INT_CONTINENTES); <?>
Usei:
$order_XCD_INT_CONTINENTES = new TAction(array($this, 'onOrder')); $order_XCD_INT_CONTINENTES->setParameter('order', 'XCD_INT_CONTINENTES'); $column_XCD_INT_CONTINENTES->setAction($order_XCD_INT_CONTINENTES); <?>
E a rotina "onOrder", segue abaixo:
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.
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:
- <?php>
Usei:
- <?php>
E a rotina "onOrder", segue abaixo:
- <?php
- public function onOrder($param)
- {
- $last_direction = TSession::getValue(self::class . '_last_direction');
- $last_direction = $last_direction == 'asc' ? 'desc' : 'asc';
- TSession::setValue(self::class . '_last_direction', $last_direction);
- $param['direction'] = $last_direction;
- $this->onReload($param);
- }
- ?>
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.
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.
Tive mesmo que utilizar view, ai consegui trabalhar como gostaria, Obrigado.
Também tenho essa dificuldade, usar view (select) vai contra até o que o framework se propõem.