Hace unos días, tuve que ordenar los nodos de un treeview. Las soluciones que he encontrado a través de Internet no me gustaban, así que decidí escribir mi propia función. Esta solución es una función recursiva simple que ordena los nodos del árbol en un orden alfabético.
Crea el treeview y agregas los nodos:
CSharp
TreeView mytree = new TreeView(); //Agrega tus nodos aquí
VB.Net
Dim mytree as TreeView = new TreeView() 'Agrega tus nodos aquí
Después, simplemente llamas a la función de clasificación con el nodo principal como argumento:
CSharp
sort(node);
VB.Net
Sort(node)
Esta es la función recursiva:
CSharp
private void sort(TreeNode node) { foreach (TreeNode n in node.ChildNodes) sort(n); try { TreeNode temp = null; List<TreeNode> childs = new List<TreeNode>(); while(node.ChildNodes.Count>0) { foreach (TreeNode n in node.ChildNodes) if (temp == null || n.Text[0] < temp.Text[0]) temp = n; node.ChildNodes.Remove(temp); childs.Add(temp); temp = null; } node.ChildNodes.Clear(); foreach (TreeNode a in childs) node.ChildNodes.Add(a); } catch { } }
VB.Net
Private Sub sort(node As TreeNode) For Each n As TreeNode In node.ChildNodes sort(n) Next Try Dim temp As TreeNode = Nothing Dim childs As New List(Of TreeNode)() While node.ChildNodes.Count > 0 For Each n As TreeNode In node.ChildNodes If temp Is Nothing OrElse n.Text(0) < temp.Text(0) Then temp = n End If Next node.ChildNodes.Remove(temp) childs.Add(temp) temp = Nothing End While node.ChildNodes.Clear() For Each a As TreeNode In childs node.ChildNodes.Add(a) Next Catch End Try End Sub
Entradas relacionadas
- Invocar un método C# usando jQuery desde el lado del cliente
- Javascript: mostrar propiedades de los objetos y sus valores
- ¿Cómo recuperar la dirección IP publica de tu computadora?
- HTML5 para desarrolladores de Silverlight
- ¿Por qué las cajas de texto conservan sus datos durante el postback incluso si el viewstate está desactivado?