1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Plugin JQuery JTreeTable, função só executa uma unica vez.

Bom dia, espero ser desculpado caso esteja fazendo algo de errado. Mas, vamos ao problema: Ambiente: WEB (Jsp), Servidor: GlassFish.

Problema: Possuo uma aplicação web, que por sua vez tem implementado uma jtreetable. (http://ludo.cubicphuse.nl/jquery-treetable/ ). No exemplo, os elementos da JtreeTable, são estaticos, na minha aplicação, são resultantes de uma chamada/resposta Ajax. Até ai, ok. Os elementos são inseridos na tabela da forma correta, com seus data-tr-id e data-tr-parent-id corretamente de acordo com o ordenado no javascript. MAS, ao chamar novamente a função que "constroi/transforma" a table e TreeTable, ele a executa mas não a executa (passa sem erros, mas não a modificação).

Processo: JspMain(click) -> Ajax(dispara) -> JspServelet(Responde) -> Ajax(Responde) -> JspMain.

Como:

function chamadaJquery(){

             if(confirm("Você deseja executar novamente a função de tabela?")){

                 $("#example-basic").treetable({ expandable: true });

              }

}

O arquivo JS que deveria realizar essa função: http://ludo.cubicphuse.nl/jquery-treetable/javascripts/src/jquery.treetable.js

RESUMO/OPNIAO: Preciso executar mais de uma vez a função, ela executa mas não á mudanças, nem log de erro no console. É neste arquivo acima que acredito tenha algum erro ou condição que não consegui identificar que limita a apenas uma chamada desta função.

--------------------------------------------------------------------Atualização---12hrs-------------------------------------------------------------------

var tr_filho = document.createElement('tr');
tr_filho.innerHTML = meuVetorTD[i];
tr_filho.setAttribute('data-tt-id',tr_pai_id+"."+(parseInt(i)+1));
tr_filho.setAttribute('data-tt-parent-id',tr_pai_id);

$("#example-basic").treetable( 'loadBranch', this, tr_filho);

Tentei dessa forma, dentro do ajax, mas não funcionou. Estou no caminho correto? Busquei sobre este exemplo: https://github.com/ludo/jquery-treetable/issues/59

--------------------------------------------------------------------Atualização---15hrs-------------------------------------------------------------------

for(var i = qtd_tr_criar-1; i >= 0; i--){//for reverse

    var tr_filho = document.createElement('tr');
    tr_filho.innerHTML = meuVetorTD[i];                        
    tr_filho.setAttribute('data-tt-id',tr_pai_id+"."+(parseInt(i)+1));
    tr_filho.setAttribute('data-tt-parent-id',tr_pai_id);
    tr_filho.setAttribute('data-tt-branch', 'true');

    table.insertBefore(tr_filho,tr_pai.nextSibling);

    $("#example-basic").treetable(

        'loadBranch',
        tr_pai,
        tr_filho);

}

Bom pessoal, espero que essa não seja a solução definitiva. Mas foi a encontrada até o momento para o problema. O que ela faz? Via Javascript Puro eu insiro na posição que quero o novo elemento (TR criado via javascript e TD retornada da servelet). Depois, a cada vez que ocorre o loop no for, executo essa função de loadBranch. Provavelmente estou fazendo algo errado, pois ao criar o elemento e o inserir, ele (a função) diz que "todos elementos dinamicos tem filhos" (e irão ter uma seta afirmando isso) o que não é verdade.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags javascript jquery ou faça a sua própria pergunta.