tendrias que tener crear una tabla parecida a esta:
Código script:
Ver originalCREATE TABLE DEPARTAMENTO(
ID_DEP .....,
NOM_DEP ....,
ID_PADRE_DEP .... --DONDE ESTE VA A CONTENER EL ID DEL DEPARTAMENTO AL CUAL PERTECNECE
PRIMARY KEY(ID_DEP))
OJO QUE DEBE TENER UNA CABEZERA!
por ejemplo unos datos :
('00001','DEPARTAMENTOS','00000') <--- Esta es la cabeza
('00002','PRESIDENCIAL','00001')
('00003','a101','00002')
('00004','a102','00002')
('00005','a103','00002')
('00006','SUITE','00006')
('00007','a201','00006')
('00008','a202','00006')
('00009','a203','00006')
('00010','NORMAL','00001')
('00011','a301','00010')
('00012','a302','00010')
EL arbol te mostraria algo asi:
Código script:
Ver originalDEPARTAMENTOS
PRESIDENCIAL
a101
a102
a103
SUITE
a201
a202
a203
NORMAL
a301
a302
y luego se crearia un metodo asi :
Código c#:
Ver originalpublic void Carga(string indicePadre, TreeNode nodePadre)
{
DataTable dtt = objmn.LISTADODEPARTAMENTOS();
DataView dataViewHijos = new DataView(dtt);
dataViewHijos.RowFilter = dtt.Columns["ID_PADRE_DEP"].ColumnName + " = " + indicePadre;
foreach (DataRowView dataRowCurrent in dataViewHijos)
{
TreeNode nuevoNodo = new TreeNode();
nuevoNodo.Text = dataRowCurrent["NOM_DEP"].ToString();
if (nodePadre == null)
{
treeView2.Nodes.Add(nuevoNodo); //se le agrega un nuevo nodo
}
else
{
nodePadre.Nodes.Add(nuevoNodo); // sino le agrego nuevos hijos
}
Carga(Int32.Parse(dataRowCurrent["ID_DEP"].ToString()), nuevoNodo);
}
treeView2.ExpandAll();
}
y finalmente para imprimir el listado se llama asi por ejemplo en tu load
Espero te haya sido util. Saludos!