Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/08/2005, 14:55
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 10 meses
Puntos: 9
Problema con DataView y RowFilter

Hola, estoy haciendo un árbol de categorías utilizando un Dataset, un Treeview y un DataView.
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:
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
 
 
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.

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:
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
 
 
Alguien me puede ayudar a entender la lógica que hay detrás de este problema?
Espero que sí.
Un saludo a todos.
Suerte!.
__________________
Add, never Remove