T
Datagrid Detail
Não consigo pegar o index da linha ao executar:
Criação da grid:
Metodo onReload:
- <?php
- $pos = $this->grid_tributos->getRowIndex('detail', $param['chave']);
- ?>
Criação da grid:
- <?php
- $this->grid_tributos = new TQuickGrid;
- $this->grid_tributos->class = "tdatagrid_table customized-table";
- $this->grid_tributos->style = 'width: 100%';
- $this->grid_tributos->setHeight( 250 );
- $this->grid_tributos->addQuickColumn('', 'edit', 'left', '5%');
- $this->grid_tributos->addQuickColumn('', 'detail', 'left', '5%');
- $this->grid_tributos->addQuickColumn('', 'delete', 'left', '5%');
- $this->grid_tributos->addQuickColumn('Tipo Imposto', 'tipoImposto', 'center', '30%');
- $this->grid_tributos->addQuickColumn('Alíquota %', 'aliquotaImposto', 'center', '30%');
- $this->grid_tributos->addQuickColumn('Estado', 'estado', 'center', '30%');
- $this->grid_tributos->createModel();
- $scroll = new TScroll();
- $scroll->setSize('100%', '250');
- $scroll->style = 'width: 100%';
- $scroll->add($this->grid_tributos);
- ?>
Metodo onReload:
- <?php
- function onReloadTributo($param = NULL)
- {
- $tributos = TSession::getValue('tributos_produto');
- $this->grid_tributos->clear();
- if (isset($tributos))
- {
- $cont = 1;
- foreach($tributos as $item)
- {
- $item_name = 'cont_' . $cont++;
- $action_edi = new TAction(array($this, 'onEditTributo'));
- $action_edi->setParameter('chave', $item['cad_estado_id'].$item['tipoImposto']);
- $button_edi = new TButton('edit_tributo'.$cont);
- $button_edi->setAction( $action_edi, '' );
- $button_edi->setImage('fa:edit blue fa-lg');
- $button_edi->style = 'width:13px; padding-left:6px; border-style: none; background: transparent;';
- $action_det = new TAction(array($this, 'onDetailTributo'));
- $action_det->setParameter('chave', $item['cad_estado_id'].$item['tipoImposto']);
- $button_det = new TButton('detail_tributo'.$cont);
- $button_det->setAction( $action_det, '' );
- $button_det->setImage('fa:edit red fa-lg');
- $button_det->style = 'width:13px; padding-left:6px; border-style: none; background: transparent;';
- $action_del = new TAction(array($this, 'onDeleteTributo'));
- $action_del->setParameter('chave', $item['cad_estado_id'].$item['tipoImposto']);
- $button_del = new TButton('delete_tributo'.$cont);
- $button_del->setAction( $action_del, '' );
- $button_del->setImage('fa:trash-o red fa-lg');
- $button_del->style = 'width:13px; padding-left:6px; border-style: none; background: transparent;';
- $tributo = new StdClass;
- $tributo->edit = $button_edi;
- $tributo->detail = $button_det;
- $tributo->delete = $button_del;
- $tributo->tipoImposto = $item['tipoImposto'];
- $tributo->aliquotaImposto = $item['aliquotaImposto'];
- $tributo->estado = $item['estado'];
- $this->formFields[ $item_name.'_edit' ] = $tributo->edit;
- $this->formFields[ $item_name.'_detail' ] = $tributo->detail;
- $this->formFields[ $item_name.'_delete' ] = $tributo->delete;
- $this->grid_tributos->addItem($tributo);
- }
- $this->form->setFields( $this->formFields );
- }
- }
- ?>
Veja a função getRowIndex:
Ela compara o valor do atributo ($attribute) de cada item da grid com o valor fixo do segundo parâmetro da função($value). Se forem iguais retorna o índice. Acontece que o atributo $tributo->detail é um TButton, por isso nenhum resultado é encontrado. Para retornar o índice corretamente o valor de $object->atributo deve ser igual a $param['chave']
Use outro atributo para identificar o item.
Consegui Nataniel, obrigado!
Outra duvida, não existe nenhuma forma de utilizar o collspan com o datatable mesmo não?