agregar registros recursivamente..
-
miércoles, 27 de febrero de 2013 14:14
Amigos, nuevamente recurro a uds, para que me ayuden o me puedan guiar para salir de este problemita que tengo,
mi problema es el siguiente:
estoy creando un sistema de bodega en donde necesito crear "lugares" donde se guardan los productos, por ejemplo, bodega1 tiene 3 habitaciones, y la habitación tiene 3 estantes y el estante esta dividido en 5 cajones... como ven esta todo como padre e hijo y asi sucesivamente...
La tabla donde guardo los datos es asi:

Si lo ven es parecido a como desplegar un menu, estuve tratando con el menu, pero no me funcionaba cuando hacia click en un item para obtener el valor el menu hijo (que lo publique aca http://social.msdn.microsoft.com/Forums/es-ES/netfxwebes/thread/9782a644-ec9b-4fbc-8f2a-e101d78e9b7a) ... tambien pense en la posibilidad de un TreeView pero nos e muy bien como funciona...
si alguien tiene alguna nocion de como trabajar, estaria muy agradecido ya que no tengo la idea de como el usuario puede agregar dinamicamente
epicentro_azul@hotmail.com ...
Todas las respuestas
-
miércoles, 27 de febrero de 2013 14:35Moderador
hola
no te animas a realizarlo con linq
[Linq] Categoría Jerárquica múltiple niveles
con este podrias agrupar y armar la jerarquia de lementos para luego usarlo en el control y armar los item y subitems del menu
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
miércoles, 27 de febrero de 2013 15:05Tngo la forma de llenar los datos que me los muestre en el menu... al igual que el ejemplo que muestras tu que los trae directamente de la base de datos.. ahora el problema es que el usuario siga agregando mas niveles en tiempo de ejecucion de la aplicacion...
epicentro_azul@hotmail.com ...
-
miércoles, 27 de febrero de 2013 15:17Moderador
ahora el problema es que el usuario siga agregando mas niveles en tiempo de ejecucion de la aplicacion
el tema es que deberias definir si permites solo dos nivelss o multiples
porqie la logica que usaris para armar la estructura varia bastante, como veras en el articulo que propuse alli se puede definir cuantos niveles quieras
pero esto deberias definir lo para que el suaurio lo tenga claro y conozca si puede crear multiples o solo un nivel
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
miércoles, 27 de febrero de 2013 17:26
tengo claro que puedo crear multiples niveles.. asi como esto.
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init 'Traemos los datos de de datos. Dim dtMenuItems As New DataTable 'Conexion a la base de datos donde esta nuestra tabla Menú. Dim cnDatos As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionStringControlBodega").ConnectionString) 'se invoca al procedimiento almacenado Dim daMenu As New SqlDataAdapter("ObtenerOpcionesMenu", cnDatos) daMenu.SelectCommand.Parameters.AddWithValue("@Accion", 1) daMenu.SelectCommand.CommandType = CommandType.StoredProcedure 'llenamos el datatable daMenu.Fill(dtMenuItems) 'recorremos el datatable para agregar los elementos de que estaran en la cabecera del menú. For Each drMenuItem As Data.DataRow In dtMenuItems.Rows 'esta condicion indica q son elementos padre. If drMenuItem("MenuId").Equals(drMenuItem("PadreId")) Then Dim mnuMenuItem As New MenuItem mnuMenuItem.Value = drMenuItem("MenuId").ToString mnuMenuItem.Text = drMenuItem("descripcion").ToString mnuMenuItem.ImageUrl = drMenuItem("Icono").ToString mnuMenuItem.NavigateUrl = drMenuItem("Url").ToString 'agregamos el Ítem al menú AppMenu.Items.Add(mnuMenuItem) 'hacemos un llamado al metodo recursivo encargado de generar el árbol del menú. AddMenuItem(mnuMenuItem, dtMenuItems) End If Next End Sub Private Sub AddMenuItem(ByRef mnuMenuItem As MenuItem, ByVal dtMenuItems As Data.DataTable) 'recorremos cada elemento del datatable para poder determinar cuales son elementos hijos 'del menuitem dado pasado como parametro ByRef. For Each drMenuItem As Data.DataRow In dtMenuItems.Rows If drMenuItem("PadreId").ToString.Equals(mnuMenuItem.Value) AndAlso Not drMenuItem("MenuId").Equals(drMenuItem("PadreId")) Then Dim mnuNewMenuItem As New MenuItem mnuNewMenuItem.Value = drMenuItem("MenuId").ToString mnuNewMenuItem.Text = drMenuItem("descripcion").ToString mnuNewMenuItem.ImageUrl = drMenuItem("Icono").ToString mnuNewMenuItem.NavigateUrl = drMenuItem("Url").ToString 'Agregamos el Nuevo MenuItem al MenuItem que viene de un nivel superior. mnuMenuItem.ChildItems.Add(mnuNewMenuItem) ' AddHandler mnuNewMenuItem.MenuItemClick, AddressOf AppMenu_MenuItemClick 'llamada recursiva para ver si el nuevo menú ítem aun tiene elementos hijos. AddMenuItem(mnuNewMenuItem, dtMenuItems) ' AddHandler mnuNewMenuItem.MenuItemClick, AddressOf AppMenu_MenuItemClick End If Next AppMenu.Attributes.Add("OnMenuItemClick", "AppMenu_MenuItemClick") End Sub
pero lo que no tengo claro es COMO CAPTURAR los valores cuando el usuario dice "ahh aqui quiero crear un nuevo item" ....
epicentro_azul@hotmail.com ...

