none
agregar registros recursivamente..

    Pregunta

  • 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 ...

    miércoles, 27 de febrero de 2013 14:14

Todas las respuestas

  • 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 14:35
  • Tngo 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:05
  • 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 15:17
  • 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 ...

    miércoles, 27 de febrero de 2013 17:26