none
obtener el valor de un "menu hijo" RRS feed

  • Pregunta

  • lo obtengo de la siguiente manera..

    Label3.Text = mnuPrincipal.SelectedValue

    pero solo lo obtengo del menu principal... no de lo shijos

    la forma de cargar el menu es desde una base de datos...

    de esta forma...

     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            If Not Page.IsPostBack Then
                Label1.Text = Session("Nombre")
                Label2.Text = Session("Rut")
    
                '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ú
                        mnuPrincipal.Items.Add(mnuMenuItem)
    
                        'hacemos un llamado al metodo recursivo encargado de generar el árbol del menú.
                        AddMenuItem(mnuMenuItem, dtMenuItems)
                    End If
                Next
            End If
        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)
    
                    'llamada recursiva para ver si el nuevo menú ítem aun tiene elementos hijos.
                    AddMenuItem(mnuNewMenuItem, dtMenuItems)
                End If
    
            Next
       
        End Sub
    
        Private Sub mnuPrincipal_MenuItemClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs) Handles mnuPrincipal.MenuItemClick
    
            Label3.Text = mnuPrincipal.SelectedValue
    
        End Sub

    GRACIAS POR SU AYUDA...


    epicentro_azul@hotmail.com ...

    martes, 19 de febrero de 2013 19:06

Respuestas

  • es que al creas los menu hijos deberias adjuntarle un evento

    usarias el

    AddHandler mnuMenuItem.MenuItemClick, AddressOf mnuMenuItem_MenuItemClick

    de esa forma podrias definri eventos de forma dinamica

    pero recuerda que lo contrroles dinamicos debes crearlos en cada postback, por lo que en este caos deberian estar por fuera del

    If Not Page.IsPostBack Then

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Propuesto como respuesta José Barba martes, 19 de febrero de 2013 19:55
    • Marcado como respuesta Omar Ortiz martes, 23 de julio de 2013 23:00
    martes, 19 de febrero de 2013 19:54

Todas las respuestas

  • es que al creas los menu hijos deberias adjuntarle un evento

    usarias el

    AddHandler mnuMenuItem.MenuItemClick, AddressOf mnuMenuItem_MenuItemClick

    de esa forma podrias definri eventos de forma dinamica

    pero recuerda que lo contrroles dinamicos debes crearlos en cada postback, por lo que en este caos deberian estar por fuera del

    If Not Page.IsPostBack Then

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Propuesto como respuesta José Barba martes, 19 de febrero de 2013 19:55
    • Marcado como respuesta Omar Ortiz martes, 23 de julio de 2013 23:00
    martes, 19 de febrero de 2013 19:54
  • no te comprendi Leandro, podrias  ser un poco mas claro, o si puedes  poner el codigo en el codigo que puse yo...
    Gracias..

    estoy atento a tus respuestas.


    epicentro_azul@hotmail.com ...

    martes, 19 de febrero de 2013 20:19
  • Leandrooo..?

    epicentro_azul@hotmail.com ...

    miércoles, 20 de febrero de 2013 12:22
  • Leandro, aun no puedo obtener el valor delmenu hijo, al agregarle  el valor AddHandler mnuMenuItem.MenuItemClick, AddressOf mnuMenuItem_MenuItemClick no lo reconoce...

    epicentro_azul@hotmail.com ...

    lunes, 25 de febrero de 2013 12:21
  • sigo en el mismo problema..


    epicentro_azul@hotmail.com ...

    lunes, 25 de febrero de 2013 17:57
  • ni una ayudita ?

    epicentro_azul@hotmail.com ...

    martes, 26 de febrero de 2013 14:24