Llenar Un TreeView Desde Un DataSet Usando Un Método Recurrente
Llenar Un TreeView Desde Un DataSet Usando Un Método Recurrente
Contrátalo ya en
un DataSet
usando un
método
recurrente
Utilizar la jerarquía definida en los
datos de una tabla para llenar el
TreeView con un método recurrente
sencillo.
Fecha: 13/Ene/2005 (12/Ene/05)
Autor: Serge Valsse ([email protected])
De igual manera si los datos que llenarán el TreeView no están en una tabla se puede
generar un DataSet con los diferentes modos que existen y obtener la estructura que se
requiere para este método que describiré en este artículo.
Supongamos que tenemos una tabla en nuestra base de datos con la siguiente estructura
y datos:
Obviamente los nombres pueden ser diferentes, pero para el ejemplo se necesitan que se
llamen así.
elguille.info/…/svalsse_llenar_un_treevie… 1/4
25/01/2010 Colabora.NET: Llenar un TreeView desde…
NombreNodo: Deberá contener el texto que se desea desplegar en el TreeView como
nodo.
IdentificadorNodo: Un número único que identifica a cada nodo. Puede ser el valor de la
llave primaria de la tabla o algún otro campo calculado pero que sea único. Para este
ejemplo es númerico pero puede ser string si así se requiere haciendo los cambios
respectivos en el código desde luego.
IdentificadorPadre: Este campo debe contener el IdentificadorNodo del Nodo del cual
depende es Nodo representado en el registro.
Observe que los Nodos del primer nivel, es decir los que no tienen Padre deben llevar el
valor 0 (cero) en el campo IdentificadorPadre ya que no dependen de nadie.
Bien, veamos ahora cual es el código del método que hará el trabajo de llenar el TreeView
utilizando toda esta estructura de datos.
1. Crear un proyecto de tipo Proyectos de Visual C#, Aplicación para Windows y llámelo
EjemploTreeView.
3. Declare un DataSet que pueda ser vista por toda la clase Form1.
System.Data.DataSet dataSetArbol;
elguille.info/…/svalsse_llenar_un_treevie… 2/4
25/01/2010 Colabora.NET: Llenar un TreeView desde…
// se añade el nuevo nodo al nodo padre.
else
{
nodePadre.Nodes.Add(nuevoNodo);
}
// Llamada recurrente al mismo método para agregar los Hijos del Nodo recién agregado.
CrearNodosDelPadre(Int32.Parse(dataRowCurrent["IdentificadorNodo"].ToString()), nuevoNodo);
}
}
5. Para simplificar el ejemplo, adicione los siguientes métodos que simularán los datos
obtenidos desde una base de datos.
// Los siguientes dos métodos son para el ejemplo, el dataset puede ser llenado desde una tabla
// de la base de datos. Lo importante es que contenga un equivalente a los tres campos que se
// llenan aqui.
private void CrearDataSet()
{
dataSetArbol = new DataSet("DataSetArbol");
InsertarDataRow("Nodo 1",1,0);
InsertarDataRow("Nodo 1.1",2,1);
InsertarDataRow("Nodo 1.1.1",3,2);
InsertarDataRow("Nodo 1.1.2",4,2);
InsertarDataRow("Nodo 1.2",5,1);
InsertarDataRow("Nodo 2",6,0);
InsertarDataRow("Nodo 2.1",7,6);
InsertarDataRow("Nodo 2.2",8,6);
InsertarDataRow("Nodo 3",9,0);
InsertarDataRow("Nodo 3.1",10,9);
InsertarDataRow("Nodo 3.2",11,9);
}
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
CrearDataSet();
}
7. Finalmente en el evento Click del boton button1 asocie el método siguiente que llamará
al método para el llenado del TreeView.
elguille.info/…/svalsse_llenar_un_treevie… 3/4
25/01/2010 Colabora.NET: Llenar un TreeView desde…
Serge Valsse
[email protected]
elguille.info/…/svalsse_llenar_un_treevie… 4/4