Israel Aéce

Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT

My Links

Blog Stats

Archives

Post Categories

Links

Login

TreeView - ASP.NET 2.0

Uma colega nos NewsGroups de ASP.NET do MSDN Brasil queria saber como se faz para contar os items de um controle TreeView do ASP.NET. Além disso, também queria fazer como se faz para recuperar os items que estão marcados, isso quando a propriedade ShowCheckBox está definida como All.

Para ambos os casos, o que deve ser utilizado é uma função recursiva, pois podemos ter nós dentro de nós e assim por diante. Resolvi postar aqui a solução que encontrei para esses dois casos, e poderá de alguma forma ajudar mais alguém que também precise.

[ Quantidade total de nós ]

private int _count = 0;
//....
private void ResgataQuantidade(TreeNodeCollection coll){
     foreach (TreeNode tn in coll){
          _count += 1;
          if(tn.ChildNodes.Count > 0)
               ResgataQuantidade(tn.ChildNodes);
     } 
}

[ Recuperando os nós selecionados ]

private void ResgataQuantidadeItemMarcados(TreeNodeCollection coll) {
     foreach (TreeNode tn in coll){
          if(tn.Checked) Response.Write(tn.Text);
               if(tn.ChildNodes.Count > 0)
                    ResgataQuantidadeItemMarcados(tn.ChildNodes);
     }
}

E para chamar qualquer umas das duas funções, basta fazer:

ResgataQuantidade(this.TreeView1.Nodes);
Response.Write("Quantidade: " + this._count.ToString());
ResgataQuantidadeItemMarcados(this.TreeView1.Nodes);

posted on Wednesday, September 14, 2005 2:16 PM

Feedback

# re: TreeView - ASP.NET 2.0 11/23/2008 6:52 PM Renan Paiva

Israel bom dia,

Estou com um problema parecido so que na verdade precisso carregar um TreeView de forma completamente dinamica. Pelo o que eu vi na sua funcao recursiva vc recupera sempre os primeiros nodes certo? ex.

1
1.1
1.2
1.2.3.4.5
1.2.3
1.1
2
2.2

ele funcionaria para um node deste tipo?

obrigado pelo post e pela ajuda
msn: renanpaiva64@hotmail.com

[]s,

# re: TreeView - ASP.NET 2.0 11/24/2008 7:54 PM Israel Aece

Boas Renan,

Eu acredito que funcionará sim. Já tentou efetuar o teste?

Title  
Name  
Url
Box Code
Protected by FormShield
Comments