[RESOLVIDO] Deixar uma TreeTable aberta (JSF 2 + primefaces3)

2 respostas
R

Pessoal,

Utilizo o p:contextMenu no meu treeTable com as opções de um CRUD (insere, altera, exclui).
Ao clicar na opção inserir desse menu, abro um formulário em p:dialog e insiro um novo nó nessa árvore. Até ai tranquilo !!!

Problema: Após expandir qualquer elemento da minha árvore e depois retraí-lo, ao inserir um novo elemento (em qualquer que seja o nível)
todos os elementos que eu havia expandido e FECHADO voltam a abrir. Ex:

Expandindo o nó “Imagens” do TreeTable:

v Documentos
v Imagens
> Aniversários
> Videos

Retraindo o nó “Imagens”

v Documentos
> Imagens
> Videos

Ao inserir um novo nó em “Videos” o nó “Imagens” que eu havia expandido volta a estar aberto.

Gostaria que simplesmente apenas fosse renderizado o novo objeto que inseri.

Assim:

v Documentos
> Imagens
v Videos
> Meu Casamento

Da uma força ae pessoal?

abraço

2 Respostas

R

Para explicar melhor:

meu treeTable
<p:treeTable id="ttIndex" 
			    	value="#{treeMB2.root}" 
			    	selectionMode="single"
			    	selection="#{treeMB2.selectedNode}"
			    	var="doc" style="width:1388px; padding: 5px;" >  
			  		
			        <p:column style="width:150px">  
			            <h:outputText value="#{doc.nome}" />  
			        </p:column>  			  		
			        
			    </p:treeTable>
meu método de addChild
public void addChildNodeAcao(Acao obj) {
		TreeNode filho = null;
		filho = new DefaultTreeNode(obj, selectedNode);
		filho.setSelected(true);
		selectedNode = filho;
		selectedNode = expand(selectedNode);
	}

public TreeNode expand(TreeNode treeNode){
	    if (treeNode.getParent()!=null){
	        treeNode.getParent().setExpanded(true);
	        expand(treeNode.getParent());
	    }
	    return treeNode;
	}

e sempre que retorna para a página, o treenode está todo fechado

R

Consegui resolver assim:

public void addChildNodeProjeto(Projeto obj) {
		TreeNode filho = null;
		filho = new DefaultTreeNode(obj, selectedNode);
		clearSelection(this.getSelectedNode());
		this.setSelectedNode(filho);
		this.getSelectedNode().setSelected(true);



	}



public void clearSelection(TreeNode node) {
        node.setSelected(false);
        for (TreeNode t : node.getChildren()) {
            clearSelection(t);
        }
	}
Criado 25 de julho de 2013
Ultima resposta 26 de jul. de 2013
Respostas 2
Participantes 1