Tabela Pai x Filho gerada dinamicamente pela interação no Dataset e pesquisa pelo Datatable

Caros,

Qual a sugestão para implementação de uma tabela pai x filho gerada dinamicamente com índices na primeira coluna.

1 - Campo de pesquisa onde digito um código que me retorna N registros. 2 - Após realizar pesquisa e o campo código escolhido for preenchido no campo logo abaixo deverá ser gerado uma tabela x pai filho dinâmica que retornará os dados do dataset passado pelo filtro do passo 1 uma interação um looping com campos textos ( input type text) com os registros e colunas do retorno do dataset.

Qual a melhor prática usando os recursos do próprio Fluig para isso?

Italo,

A função que insere uma nova linha na tabela pai x filho é wdkAddChild('TABLENAME'). Após inserida, ela altera uma variável global chamada "newId". É através dela que você vai identificar qual foi a última linha inserida e então inputar o valor.

Para resolver o seu problema, você precisa ter uma tabela já estruturada no HTML com as colunas que quer e a primeira linha do tbody com o(s) input(s).


<table id="idTabela" class="table table-condensed" tablename="tablename">
   <thead>
      <tr>
         <th>Coluna</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td><input type="text" class="form-control" name="nomeinput" /></td>
      </tr>
   </tbody>

</table>

Para conseguir o dinamismo, após o código preenchido, pode fazer uso da função abaixo:



<script type="text/javascript">

/*
 * Função recebe como parâmetro: ID da tabela, Tablename, 
 * Nome do input e o dataset retornado na consulta anterior.
------------------------------------------------------------- */
function insert_row(idTabela,tablename,inputname,dataset)
{
   limpa_datatable(idTabela);

   if(dataset != null && dataset.values != null && dataset.values.length > 0)
   {
      for(var i=0; i<dataset.values.length;i++)
      {
         var valor = dataset.values[i].COLUNA;

         //ADICIONA UMA NOVA LINHA NA TABELA
         wdkAddChild(tablename);

        //INPUT VALOR
        $("input[name='"+inputname+"___"+newId+"']").val(valor);
      }

      //Mostra tabela
      $(idTabela).show();
   }
}

//Limpa opções do datatable caso ocorra uma nova pesquisa
function limpa_datatable(idTabela)
{
   $(idTabela+' tbody tr').not(':first').each(function(count,tr){ 
      fnWdkRemoveChild($(this).find('i')[0]);
   });
}

</script>