Llenar treeView con datatable
Aqui le muestro el codigo para llenar un treeview
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("NOMBRE");
dt.Columns.Add("PADRE");
DataRow dr;
dr = dt.NewRow();
dr["ID"] = "1";
dr["NOMBRE"] = "SISTEMAS";
dr["PADRE"] = "0";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "2";
dr["NOMBRE"] = "DESARROLLO";
dr["PADRE"] = "1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "3";
dr["NOMBRE"] = "SOPORTE TECNICO";
dr["PADRE"] = "1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "4";
dr["NOMBRE"] = "CONTABILIDAD";
dr["PADRE"] = "0";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "5";
dr["NOMBRE"] = "COBRANZAS";
dr["PADRE"] = "4";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "6";
dr["NOMBRE"] = "FACTURACION";
dr["PADRE"] = "4";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "7";
dr["NOMBRE"] = "GERENCIA";
dr["PADRE"] = "0";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "8";
dr["NOMBRE"] = "PRESIDENCIA";
dr["PADRE"] = "7";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "9";
dr["NOMBRE"] = "GERENCIA";
dr["PADRE"] = "7";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "10";
dr["NOMBRE"] = "SECRETARIA GENERAL";
dr["PADRE"] = "7";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "11";
dr["NOMBRE"] = "PRODUCCION";
dr["PADRE"] = "0";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "12";
dr["NOMBRE"] = "MATERIA PRIMA";
dr["PADRE"] = "11";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "13";
dr["NOMBRE"] = "ENSAMBLADO";
dr["PADRE"] = "12";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "14";
dr["NOMBRE"] = "CONEXIONES";
dr["PADRE"] = "13";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "15";
dr["NOMBRE"] = "CALIDAD";
dr["PADRE"] = "0";
dt.Rows.Add(dr);
AddNodes(dt);
dataGridView1.DataSource = dt;
}
private void AddNodes(DataTable dt)
{
TreeNode padre;
TreeNode hijo;
try
{
for (int i = 0; i < dt.Rows.Count ; i++)
{
hijo= new TreeNode();
hijo.Text=dt.Rows[i]["NOMBRE"].ToString();
hijo.Tag=dt.Rows[i]["ID"].ToString();
hijo.ToolTipText=dt.Rows[i]["PADRE"].ToString();
padre = FindParent(dt.Rows[i]["PADRE"].ToString(),treeView1.Nodes);
if (padre == null)
{
this.treeView1.Nodes.Add(hijo);
}
else
{
padre.Nodes.Add(hijo);
}
padre = null;
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private TreeNode FindParent(String NodoBusqueda, TreeNodeCollection nodos)
{
TreeNode padre = null;
bool encontrado = false;
int contador = 0;
while (encontrado == false && contador < nodos.Count)
{
if (nodos[contador].Tag == NodoBusqueda)
{
encontrado = true;
padre = nodos[contador];
}
else
{
if (nodos[contador].Nodes.Count>0)
{
padre=FindParent(NodoBusqueda,nodos[contador].Nodes);
if (padre!=null)
{
encontrado=true;
}
}
}
contador++;
}
return padre;
}
Comentarios
Publicar un comentario