Foros del Web » Programación para mayores de 30 ;) » .NET »

TreeView

Estas en el tema de TreeView en el foro de .NET en Foros del Web. El problemita que tengo es el siguiente: * Quiero organizar de forma visual en un TreeView las Categorias de por ejemplo Productos. * Estas Categorias ...
  #1 (permalink)  
Antiguo 01/07/2009, 20:53
 
Fecha de Ingreso: abril-2009
Mensajes: 2
Antigüedad: 15 años
Puntos: 0
De acuerdo TreeView

El problemita que tengo es el siguiente:


* Quiero organizar de forma visual en un TreeView las Categorias de por ejemplo Productos.

* Estas Categorias Se guardan en una Tabla que tiene las columnas
CategoriaID
Nombre
ParentID

Bueno parentId es una columana donde se guardara el Código en este caso CategoriaID si es que esta Categoria perteneciera a una Categoria Superior-Inferior,
es decir una Relación Padre-Hijo

Más Puntualmente mi Problema es Como uso el TreeView para que me refleje la relacion Padre-Hijo de mi tabla Categoria.

Si me pudiesen ayudar ...seria genial graciass.
  #2 (permalink)  
Antiguo 02/07/2009, 01:35
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia
Mensajes: 152
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: TreeView

Si no lo he entendido mal, yo haria:

1.-Crearia un nodque seria el padre de todos,es decir el nodo principal
nodo = arbol.Nodes.Add("PRODUCTOS")

2.-Leeria de la tabla todos los parentId que hay ,(sin repetir), uno por uno, y crearia un nodo que seria hijo del anterior("PRODUCTOS")
hijo = nodo.Nodes.Add("PARENT")

2.2.-TRas crear este nodo hijo, buscaria en la tabla todos los nodos que en la columna parentId fuera igual al codigo de categoriaId del nodo creado.Y con un bucle crearia un nodo que colgaria de parent
ultimonodo = hijo.Nodes.Add("HIJOS")


Espero haberme explicado bien y que te sirva mi ayuda.
  #3 (permalink)  
Antiguo 02/07/2009, 14:53
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Respuesta: TreeView

Para no matar la base de datos te cargas todo dentro de un DataTable despues desde allí sacas todo basado en el ParentID con un método recursivo.

Te dejo este código para que cojas idea de que quiero decir.

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
dt.Columns.Add("CategoriaID", typeof(int));
dt.Columns.Add("Nombre", typeof(string));
dt.Columns.Add("ParentID", typeof(int));

dt.Rows.Add(new object[] { 1, "Productos", 0 });
dt.Rows.Add(new object[] { 2, "TV LCD", 1 });
dt.Rows.Add(new object[] { 3, "XBOX", 1 });
dt.Rows.Add(new object[] { 4, "PS3", 1 });
dt.Rows.Add(new object[] { 5, "Servicios", 0 });
dt.Rows.Add(new object[] { 6, "Internet", 5 });
dt.Rows.Add(new object[] { 7, "Casa", 6 });
dt.Rows.Add(new object[] { 8, "Oficina", 6 });

CreateTreeView(dt);
}

private DataTable dt = new DataTable();

private void CreateTreeView(DataTable dt)
{
if (dt.Rows.Count > 0)
{
DataRow[] rows = dt.Select("ParentID = 0");

if (rows.Length > 0)
{
foreach (DataRow dr in rows)
{
int CategoriaID = (int)dr["CategoriaID"];
string Nombre = dr["Nombre"].ToString();

TreeNode node = new TreeNode(Nombre);
node.Tag = CategoriaID;

CreateChildRecursive(node);
this.treeView1.Nodes.Add(node);
}
}
}
}

private void CreateChildRecursive(TreeNode ParentNode)
{
DataRow[] rows = dt.Select("ParentID = " + ParentNode.Tag.ToString());

if (rows.Length > 0)
{
foreach (DataRow dr in rows)
{
int CategoriaID = (int)dr["CategoriaID"];
string Nombre = dr["Nombre"].ToString();

TreeNode node = new TreeNode(Nombre);
node.Tag = CategoriaID;

CreateChildRecursive(node);
ParentNode.Nodes.Add(node);
}
}
}
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:24.