Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Nome e não ID no Datagrid Pessoal alguém já passou por isso: Estou precisando mostrar no datagrid o nome e não o ID, por exemplo, onde esta id_produto quero que ele mostre pra mim o nome dele que esta no campo descricao, já tentei desta forma: id_produto->descricao e não funcionou. $column_id = new TDataGridColumn('id', 'ID', 'right'); $column_id_produto = new TDataGridColumn('id_produto', ...
FS
Nome e não ID no Datagrid  
Pessoal alguém já passou por isso: Estou precisando mostrar no datagrid o nome e não o ID, por exemplo, onde esta id_produto quero que ele mostre pra mim o nome dele que esta no campo descricao, já tentei desta forma: id_produto->descricao e não funcionou.

$column_id = new TDataGridColumn('id', 'ID', 'right');
$column_id_produto = new TDataGridColumn('id_produto', 'Produto', 'right');
$column_qtde = new TDataGridColumn('qtde', 'Qtde', 'right');
$column_valor_unitario = new TDataGridColumn('valor_unitario', 'Valor Unitário', 'left');

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (9)


NM

Hola, bom dia

Depois de adicionar a coluna na datagrid dale um setTransform:
$col_vd_cd_despe->setTransformer(function($value) {
return Tdespesas::findInTransaction(self::$db, $value)->td_descri;
});

com isso ele vai mostrar a descrição ou nome em vez do codigo
FS

Não sei se é devido ao seu código mais algumas informações não entendi de onde esta vindo, por exemplo o Tdespesas;
NM

Perdão, ali coloque um codigo de uma aplicação que tenho aqui, apenas como exemplo

$col_vd_cd_despe->setTransformer(function($value) {
return Tdespesas::findInTransaction(self::$db, $value)->td_descri;
});

$col_vd_cd_despe >>> coluna da grid
Tdespesas >>> tabela do model
td_descri >>> campo da tabela que tem que mostrar no lugar do codigo

FS

deu certo aqui agora, agora me deparei com a mesma situação porém no mestre detalhe e da maneira como foi mecionado não funciona para
esta nova situação, saberia como resolver para que ele apresente o nome e não o id?
  1. <?php
  2. public function onDetailAdd$param )
  3.     {
  4.         try
  5.         {
  6.             $this->form->validate();
  7.             $data $this->form->getData();
  8.             
  9.             /** validation sample
  10.             if (empty($data->fieldX))
  11.             {
  12.                 throw new Exception('The field fieldX is required');
  13.             }
  14.             **/
  15.             
  16.             $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid uniqid();
  17.             
  18.             $grid_data = [];
  19.             $grid_data['uniqid'] = $uniqid;
  20.             $grid_data['id'] = $data->detail_id;
  21.             $grid_data['id_produto'] = $data->detail_id_produto;
  22.             $grid_data['id_produto'] = $resultado;
  23.             $grid_data['qtde'] = $data->detail_qtde;
  24. ?>
NM

Oi

Se for campo no Form ai uso o TDBCombo:

$co_cd_transp = new TDBCombo('co_cd_transp', 'crtmic', 'Transportador', 'tr_id', 'tr_nm_reduzi');

FS

Não, me refiro a esta linha no grid
  1. <?php
  2. $grid_data['id_produto'] = $data->detail_id_produto;
  3. ?>

onde aparece o ID e eu que mostre a descrição.
NM

O setTransforme funciona mas quando você vai fazer uma pesquisa ele consegue localizar pelo codigo e não pelo nome que esta em tela, pelo menos não consegui aqui, o que faço é para essas grids que tem tabela relacionadas crio uma view na base de dados ai faço a grid com os dados da view.
FS

Sim, também faço dessa forma, porém este tipo de formulário que tem o metre detalhe não tem como, bom eu acho que não usar uma view.
FS

Consegui resolver meu problema vendo um video do Pablo no youtube e com a ajuda do Nilton
segue o link caso alguem precidese: https://youtu.be/mN4G3P5LiT8
Meu código ficou assim:
  1. <?php
  2. // items
  3.         $this->detail_list->addColumn( new TDataGridColumn('uniqid''Uniqid''center') )->setVisibility(false);
  4.         $this->detail_list->addColumn( new TDataGridColumn('id''Id''center') )->setVisibility(false);
  5.         $this->detail_list->addColumn( new TDataGridColumn('id_produto''ID''left'100) );
  6.         $pi $this->detail_list->addColumn( new TDataGridColumn('id_produto''Descrição''left'100) );
  7.         $this->detail_list->addColumn( new TDataGridColumn('qtde''Qtde''left'100) );
  8.         
  9.         
  10.         $pi->setTransformer(function($value) {
  11.             return Produto::findInTransaction('expedicao'$value)->descricao;
  12.         });
  13. ?>