Al momento de recorrer los registros del DS, hago un DataView.RowFilter, para que me obtenga los registros dependientes de esa categoria. La cuestión es que el árbol de categorías funciona correctamente, pero no logro hacer bajo ninguna forma que pinte aquellas categorías que son de 4to. nivel.
La estructura del árbol es así:
-Categorías
----->Computación
----------->Computadoras
----------->Notebooks
----------->Impresoras
----------->...
----->Electrónica
----------->Audio para el hogar
------------------>Minicomponentes
------------------>Home Theaters
------------------>...
----------->Audio para el auto
------------------>Reproductores MP3
------------------>Stereos
------------------>...
----------->Tv y Video
------------------>Televisores 14 pulgadas
------------------>Televisores 21 pulgadas
------------------>Televisores 25 pulgadas
------------------>...
----------->...
----->Libros
----------->Computación
----------->Management
----------->Narrativa
----------->Cuentos infantiles
----------->...
Esas categorías marcadas con negrita son las que no logro hacer que me aparezcan. Lo otro funciona correctamente.
Una de las alternativas que probé fue haciendo esto:
Código:
Lo que eso me hace es dibujarme por cada categoría o subcategoria su primer nodo, y despues pasa al siguiente. Es decir, con eso, en total me quedan 7 categorias, cuando en realidad hay un total de 54 categorias.ForEach dr In dsDatos.Tables("Categorias").Rows nodo = tv.Nodes(0).Nodes.Add(dr("CAT_NOMBRE")) dvCategorias.RowFilter = "CAT_IDDEP = " & dr("CAT_ID") Dim i AsInteger For i = 0 To dvCategorias.Count - 1 If Not dvCategorias.Count = 0 Then nodo_secundario = nodo.Nodes.Add(dvCategorias.Item(i).Row ("CAT_NOMBRE")) dvCategorias.RowFilter = "CAT_IDDEP = " & dvCategorias.Item(i).Row("CAT_ID") Dim a AsInteger For a = 0 To dvCategorias.Count - 1 nodo_secundario.Nodes.Add(dvCategorias.Item(a).Row ("CAT_NOMBRE")) Next EndIf Next Next
El código que más me acercó a lo que estoy buscando fue esta alternativa (me da el problema que comenté arriba):
Código:
Alguien me puede ayudar a entender la lógica que hay detrás de este problema?ForEach dr In dsDatos.Tables("Categorias").Rows nodo = tv.Nodes(0).Nodes.Add(dr("CAT_NOMBRE")) dvCategorias.RowFilter = "CAT_IDDEP = " & dr("CAT_ID") Dim i AsInteger For i = 0 To dvCategorias.Count - 1 nodo_secundario = nodo.Nodes.Add(dvCategorias.Item(i).Row ("CAT_NOMBRE")) Next Next
Espero que sí.
Un saludo a todos.
Suerte!.