Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Edição inline no DataGrid Não estou conseguindo editar no datagrid, quando clico na linha desejada o campo some(Imagem anexo). Segue a criação da grid. ...
T
Edição inline no DataGrid  
Não estou conseguindo editar no datagrid, quando clico na linha desejada o campo some(Imagem anexo).

Segue a criação da grid.

  1. <?php
  2.         $this->grid = new TDataGrid;
  3.         $this->grid->makeScrollable();
  4.         $this->grid->setHeight150 );
  5.         
  6.         
  7.         $parcela     = new TDataGridColumn('parcela''Parcela''center'80);
  8.         $dias          = new TDataGridColumn('qtdDias''Dias''center'80);
  9.         $desconto  = new TDataGridColumn('percDesconto''Desconto %''center'200);
  10.         $acrescimo = new TDataGridColumn('percAcrescimo''Acrescimo %''center'200);
  11.         $comissao  = new TDataGridColumn('percComissao''Comissão %''center'197);
  12.         
  13.         $this->grid->addColumn($parcela);
  14.         $this->grid->addColumn($dias);
  15.         $this->grid->addColumn($desconto);
  16.         $this->grid->addColumn($acrescimo);
  17.         $this->grid->addColumn($comissao);
  18.         
  19.         $editaction = new TDataGridAction(array($this'onEditInline'));
  20.         $editaction->setField('parcela');
  21.         $desconto->setEditAction($editaction);
  22.         
  23.         $this->grid->createModel();
  24. ?>

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

Thiago, verifique se não a datagrid está dentro de uma tag form. Como o inlineEdit cria um outro form para cada campo, uma tag form dentro de outra pode causar esse problema.
T

Nataniel, não encontrei o erro! Segue todo o código.

  1. <?php
  2. class ModalidadeForm extends TPage
  3. {
  4.     private $form;
  5.     private $dbname;
  6.     private $grid;
  7.    
  8.     function __construct()
  9.     {
  10.         parent::__construct();
  11.         $this->dbname TSession::getValue('dbname');
  12.         
  13.         $this->form = new TForm('modalidade');
  14.         $this->form->class 'tform';
  15.         
  16.         $lbl_titulo      = new TLabel('Cadastro de Modalidade de Pagamento');
  17.         $lbl_id          = new TLabel('ID');
  18.         $lbl_descricao   = new TLabel('Descrição');
  19.         $lbl_parcelas    = new TLabel('Parcelas');
  20.         $lbl_limite      = new TLabel('Verifica Limite');
  21.         $lbl_cc          = new TLabel('Conta Corrente');
  22.         $lbl_apf         = new TLabel('APF');
  23.         $lbl_intervalo   = new TLabel('Intervalo Dias');
  24.        
  25.         $criteria       = new TCriteria;
  26.         $criteria->add(new TFilter("tipo""=""A"));
  27.         $id             = new TEntry('id');
  28.         $descricao      = new TEntry('descricao');
  29.         $formaPagamento = new TRadioGroup('formaPagamento');
  30.         $frame          = new TFrame;
  31.         $frame2         = new TFrame;
  32.         $qtdParcelas    = new TEntry('qtdParcelas');
  33.         $verificaLimite = new TCheckButton('verificaLimite');
  34.         $cod_cc         = new  ">TDBSeekButton('cad_conta_corrente_id'$this->dbname'modalidade''Cad_ContaCorrente' 'descricao''cad_conta_corrente_id''cc');
  35.         $cc             = new TEntry('cc');
  36.         $cod_apf        = new  ">TDBSeekButton('cad_apf_id'$this->dbname'modalidade''Cad_Apf' 'descricao''cad_apf_id''apf'$criteria);
  37.         $apf            = new TEntry('apf');
  38.         $intervalo      = new TEntry('intervalo');
  39.         $button_inserir = new TButton('inserir');
  40.         
  41.         $id->setSize(70);
  42.         $id->setEditable(FALSE);
  43.         $formaPagamento->setLayout('horizontal');
  44.         $descricao->setSize(280);
  45.         $qtdParcelas->setSize(70);
  46.         $intervalo->setSize(90);
  47.         $cod_cc->setSize(40);
  48.         $cod_apf->setSize(40);
  49.         $cc->setSize(305);
  50.         $apf->setSize(270);
  51.         $button_inserir->setImage('ico_add.png');
  52.         
  53.         $itens_pagamento = array();
  54.         $itens_pagamento['V'] = 'A Vista';
  55.         $itens_pagamento['P'] = 'A Prazo';
  56.         $itens_pagamento['O'] = 'Outros';
  57.         $formaPagamento->addItems($itens_pagamento);
  58.         $formaPagamento->setValue('V');
  59.         
  60.         $verificaLimite->setIndexValue('S');
  61.         $verificaLimite->setValue('N');
  62.         
  63.         $frame->add($formaPagamento);
  64.         $frame->setLegend('Pagamento');
  65.         $frame->style 'height: 43px';        
  66.         $frame2->style 'height: 27px; width: 100px;';
  67.         
  68.         $insere_parcelas = new TAction(array($this'onInsert'));
  69.         $button_inserir->setAction($insere_parcelas'Gerar Parcelas');
  70.         
  71.         //Tabela Principal
  72.         $table = new TTable;
  73.         $table->style 'width:100%';
  74.         $row $table->addRow();
  75.         $row->class 'tformtitle';
  76.         $cell $row->addCell($lbl_titulo);
  77.         $cell->colspan 2;
  78.         
  79.         
  80.         //Adicionando os campos ao formulario
  81.         $this->grid = new TDataGrid;
  82.         $this->grid->makeScrollable();
  83.         $this->grid->setHeight150 );
  84.         
  85.         
  86.         $parcela   = new TDataGridColumn('parcela''Parcela''center'80);
  87.         $dias      = new TDataGridColumn('qtdDias''Dias''center'80);
  88.         $desconto  = new TDataGridColumn('percDesconto''Desconto %''center'200);
  89.         $acrescimo = new TDataGridColumn('percAcrescimo''Acrescimo %''center'200);
  90.         $comissao  = new TDataGridColumn('percComissao''Comissão %''center'197);
  91.         
  92.         $this->grid->addColumn($parcela);
  93.         $this->grid->addColumn($dias);
  94.         $this->grid->addColumn($desconto);
  95.         $this->grid->addColumn($acrescimo);
  96.         $this->grid->addColumn($comissao);
  97.         
  98.         $editaction = new TDataGridAction(array($this'onEditInline'));
  99.         $editaction->setField('parcela');
  100.         $desconto->setEditAction($editaction);
  101.         
  102.         $this->grid->createModel();
  103.         
  104.         $panel = new TPanel(NULL,370);
  105.         $panel->put($lbl_id00);
  106.         $panel->put($lbl_descricao22552);
  107.         $panel->put($lbl_parcelas51552);
  108.         $panel->put($lbl_intervalo59552);
  109.         $panel->put($lbl_limite72574);
  110.         $panel->put($lbl_cc0104);
  111.         $panel->put($lbl_apf380104);
  112.         
  113.         $panel->put($id1018);
  114.         $panel->put($frame853);
  115.         $panel->put($descricao23570);
  116.         $panel->put($qtdParcelas52570);
  117.         $panel->put($intervalo60570);
  118.         $panel->put($frame270370);
  119.         $panel->put($verificaLimite71774);
  120.         $panel->put($cod_cc10122);
  121.         $panel->put($cc75122);
  122.         $panel->put($cod_apf390122);
  123.         $panel->put($apf455122);
  124.         $panel->put($button_inserir730122);
  125.         $panel->put($this->grid10160);
  126.                
  127.         $row $table->addRow();
  128.         $cell $row->addCell($panel);
  129.         //Fim dos Campos do Forumlario
  130.         
  131.         //Botoes do fomulario
  132.         $save_button = new TButton('salvar');
  133.         $save_button->setAction(new TAction(array($this'onSave')), 'Salvar');
  134.         $save_button->setImage('ico_save.png');
  135.         
  136.         $new_button=new TButton('novo');
  137.         $new_button->setAction(new TAction(array($this'onClear')), 'Novo');
  138.         $new_button->setImage('ico_new.png');
  139.         
  140.         $list_button=new TButton('pesquisar');
  141.         $list_button->setAction(new TAction(array('ModalidadeList''onReload')), 'Pesquisar');
  142.         $list_button->setImage('ico_datagrid.png');
  143.         
  144.         $buttons = new THBox;
  145.         $buttons->add($save_button);
  146.         $buttons->add($new_button);
  147.         $buttons->add($list_button);
  148.        
  149.         $row $table->addRow();
  150.         $row->class 'tformaction';
  151.         $cell $row->addCell$buttons );
  152.         $cell->colspan 2;
  153.         //Fim dos Botoes
  154.                 
  155.         $this->form->add($table);
  156.         $this->form->setFields(array($id,$descricao,$formaPagamento,$qtdParcelas,$verificaLimite,
  157.                                      $cod_cc,$cc,$cod_apf,$apf,$intervalo,
  158.                                      $save_button,$new_button,$list_button,$button_inserir));
  159.         
  160.         $container = new TTable;
  161.         $container->width '865px';
  162.         $container->addRow()->addCell(new TXMLBreadCrumb('menu.xml''ModalidadeForm'));
  163.         $container->addRow()->addCell($this->form);
  164.         
  165.         parent::add($container);
  166.     }
  167.     
  168.     function onEditInline($param)
  169.     {
  170.             
  171.     }
  172.     
  173.     function onInsert($param)
  174.     {
  175.         $dados $this->form->getData();
  176.         TSession::setValue('items_modalidade'NULL);
  177.         $dias 0;
  178.         $intervalo $dados->intervalo;
  179.         $parcelas $dados->qtdParcelas;
  180.         
  181.         for($i=1;$i<=$parcelas;$i++)
  182.         {
  183.             $key $i;
  184.             $items$key ] = array('parcela'       => $i,
  185.                                    'qtdDias'       => $dias,
  186.                                    'percDesconto'  => '0,00',
  187.                                    'percAcrescimo' => '0,00',
  188.                                    'percComissao'  => '0,00',);
  189.             $dias $dias $intervalo;
  190.         }
  191.         TSession::setValue('items_modalidade'$items);
  192.         $this->form->setData($dados);            
  193.         $this->onReload($param);
  194.     }
  195.     
  196.     function onReload($param NULL)
  197.     {
  198.         $items TSession::getValue('items_modalidade');
  199.         
  200.         $this->grid->clear();
  201.         
  202.         if (isset($items))
  203.         {            
  204.             $cont 1;
  205.             foreach($items as $item)
  206.             {    
  207.                 $parcela = new StdClass;                
  208.                 $parcela->parcela       $item['parcela'];
  209.                 $parcela->qtdDias       $item['qtdDias'];
  210.                 $parcela->percDesconto  $item['percDesconto'];
  211.                 $parcela->percAcrescimo $item['percAcrescimo'];
  212.                 $parcela->percComissao  $item['percComissao'];
  213.                 
  214.                 $this->grid->addItem($parcela);
  215.             }
  216.         }
  217.         
  218.     }
  219.     
  220.     public function onClear()
  221.     {
  222.         $this->form->clear();
  223.     }
  224.     
  225.     function onSave()
  226.     {
  227.         try
  228.         {
  229.             TTransaction::open($this->dbname);
  230.             
  231.             $dados $this->form->getData('Cad_Modalidade');
  232.                         
  233.             $this->form->validate();
  234.             $dados->store();
  235.             
  236.             TTransaction::close();
  237.             
  238.             new TMessage('info''Registro salvo com sucesso');
  239.             $this->form->clear();            
  240.         }
  241.         catch (Exception $e)
  242.         {
  243.            new TMessage('error'$e->getMessage()); 
  244.            TTransaction::rollback();
  245.         }
  246.     }
  247.     
  248.     function onEdit$param )
  249.     {
  250.         try
  251.         {
  252.             TTransaction::open($this->dbname);
  253.             
  254.             if(isset($param['key']))
  255.             {
  256.                 $key $param['key'];
  257.                 $obj = new Cad_Modalidade($key);
  258.                 $this->form->setData($obj);
  259.             }
  260.             
  261.             TTransaction::close();
  262.         }
  263.         catch (Exception $e)
  264.         {
  265.             new TMessage('error'$e->getMessage());
  266.         }
  267.     }
  268. }
  269. ?>
NR

Thiago, a sua estrutura está assim:
form -> table -> panel -> grid -> linhas da grid -> form(este form é gerado pelo inlineEdit) -> coluna da grid

Há um form dentro de outro, e imagino que isso seja a causa do problema.

Reestruture seu código para que a grid não seja filha do form principal.