DU
Ordenar uma coluna agregada em datagrid
Fechado
Boa tarde!
É possível ordenarmos uma coluna que mostra a informação de uma agregação em um DataGrid?
Tenho a seguinte situação:
$column_REFERENCIA = new TDataGridColumn('REFERENCIA', 'Referência', 'left');
$column_DESCRICAO = new TDataGridColumn('produtos->DESCRICAO', 'Descrição', 'left');
Gostaria de ordenar a coluna Descrição, coloquei o código abaixo:
$order_DESCRICAO = new TAction(array($this, 'onReload'));
$order_DESCRICAO->setParameter('order', 'produtos->DESCRICAO');
$column_DESCRICAO->setAction($order_DESCRICAO);
Ao clicar na coluna, dá a seguinte mensagem de erro:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '>DESCRICAO asc LIMIT 10' at line 1
Abraços
É possível ordenarmos uma coluna que mostra a informação de uma agregação em um DataGrid?
Tenho a seguinte situação:
$column_REFERENCIA = new TDataGridColumn('REFERENCIA', 'Referência', 'left');
$column_DESCRICAO = new TDataGridColumn('produtos->DESCRICAO', 'Descrição', 'left');
Gostaria de ordenar a coluna Descrição, coloquei o código abaixo:
$order_DESCRICAO = new TAction(array($this, 'onReload'));
$order_DESCRICAO->setParameter('order', 'produtos->DESCRICAO');
$column_DESCRICAO->setAction($order_DESCRICAO);
Ao clicar na coluna, dá a seguinte mensagem de erro:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '>DESCRICAO asc LIMIT 10' at line 1
Abraços
Douglas, boa noite
Trata-se apenas de passar para a Criteria no "onReload" a ordem que você quer (campo), pois isso vai se tornar um Select no BD.
Tente da forma abaixo, sendo que "DESCRICAO" é o campo no BD/Tabela que você quer ordenar.
Desculpe não vi a "Situação", este dado vem de outra tabela. ai não saberia te responder ao certo, uma vez que no "onReload" será feito um Select na
tabela aberta e depois carregado na Grid.
Eu nestes casos prefiro fazer uma View com Inner Join entre as tabelas.
Abraços
Oi Douglas e Marcos
Não é necessário fazer View basta passar o order como sub query como nesse exemplo
www.adianti.com.br/framework_files/tutor/index.php?class=CustomerDat
Repara dentro do onReload essa parte:
Felipe, muito obrigado!
Vou testar e qualquer coisa eu volto a comentar.
Abraços.