Foros del Web » Programación para mayores de 30 ;) » .NET »

menu desplegable dinamico

Estas en el tema de menu desplegable dinamico en el foro de .NET en Foros del Web. Hola a tod@s tengo una duda que no se si me la podreis solucionar, quisiera crear un menu desplegable desde asp.net como el que podemos ...
  #1 (permalink)  
Antiguo 05/07/2009, 13:22
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
menu desplegable dinamico

Hola a tod@s tengo una duda que no se si me la podreis solucionar, quisiera crear un menu desplegable desde asp.net como el que podemos ver en esta web http://www.dynamicdrive.com/dynamici...enu-glossy.htm. pero lo que quisiera hacer es que desde una aplicacion pueda modificar el menu. Me explico, que podamos añadir o quitar elementos dinamicamente desde una base de datos o modificar el nombre de los botones o submenus. Si alguien me pudiera ayudar diciendome donde puedo encontrar algo parecido o explicarme como hacerlo se lo agradeceria mucho.
Un saludo
  #2 (permalink)  
Antiguo 09/07/2009, 11:00
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: menu desplegable dinamico

Bueno he hecho el siguiente código para poder realizar el menú desplegable dinámico pero no consigo que funcione si me podeis echar un mano y si sabéis de otra forma de hacerlo me gustaría que me la explicarais.
Muchas gracias.
Código PHP:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="botonera.ascx.vb" Inherits="include_botonera" %>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml"><head>

<
title>Glossy Accordion Menu</title>
<
link rel="stylesheet" type="text/css" href="css/mainstyle.css"/>

<
script type="text/javascript" src "js/jquery.js"></script>

<script type="text/javascript" src="js/ddaccordion.js">
</script>
<script type="text/javascript">
ddaccordion.init({
    headerclass: "submenuheader", //Shared CSS class name of headers group
    contentclass: "submenu", //Shared CSS class name of contents group
    revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click" or "mouseover
    collapseprev: true, //Collapse previous content (so only one open at any time)? true/false 
    defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content
    onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
    animatedefault: false, //Should contents open by default be animated into view?
    persiststate: true, //persist state of opened contents within browser session?
    toggleclass: ["", ""], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
    togglehtml: ["suffix", "<img src='plus.gif' class='statusicon' />", "<img src='minus.gif' class='statusicon' />"], //Additional HTML added to the header when it's collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
    animatespeed: "normal", //speed of animation: "fast", "normal", or "slow"
    oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
        myiframe=window.frames["myiframe"]
        if (expandedindices.length>0 && expandedindices[expandedindices.length-1]>=2)
            myiframe.location.replace(headers[expandedindices.pop()].getAttribute('href')) //Get "href" attribute of final expanded header to load into IFRAME
    },
    onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
        if (state=="block" && isuseractivated==true && index>=2){ //if header is expanded and as the result of the user initiated action
            myiframe.location.replace(header.getAttribute('href'))
        }
    }
})

</script><style type="text/css">
.submenu{display: none}
</style>

<style type="text/css">

.glossymenu{
margin: 5px 0;
padding: 0;
width: 170px; /*width of menu*/
border: 1px solid #9A9A9A;
border-bottom-width: 0;
}

.glossymenu a.menuitem{
background: blue url(img/glossyback.gif) repeat-x bottom left;
font: bold 14px "Lucida Grande", "Trebuchet MS", Verdana, Helvetica, sans-serif;
color: white;
display: block;
position: relative;
width: auto;
padding: 4px 0;
padding-left: 10px;
text-decoration: none;
}


.glossymenu a.menuitem:visited, .glossymenu .menuitem:active{
color: white;
}

.glossymenu a.menuitem .statusicon{ /*CSS for icon image that gets dynamically added to headers*/
position: absolute;
top: 5px;
right: 5px;
border: none;
}

.glossymenu a.menuitem:hover{
background-image: url(glossyback2.gif);
}

.glossymenu div.submenu{ /*DIV that contains each sub menu*/
background: white;
}

.glossymenu div.submenu ul{ /*UL of each sub menu*/
list-style-type: none;
margin: 0;
padding: 0;
}

.glossymenu div.submenu ul li{
border-bottom: 1px solid blue;
}

.glossymenu div.submenu ul li a{
display: block;
font: normal 13px "Lucida Grande", "Trebuchet MS", Verdana, Helvetica, sans-serif;
color: black;
text-decoration: none;
padding: 2px 0;
padding-left: 10px;
}

.glossymenu div.submenu ul li a:hover{
background: #DFDCCB;
colorz: white;
}

</style>

<link media="all" href="../css/widget04.css" type="text/css" rel="stylesheet"/></head><body>


<script type="text/javascript">
if (showincontentheader)
document.write('<div id="topbanner" align="left">'+revised_ranban[ran_num]+'</div>')
</script>
<!--webbot bot="HTMLMarkup" startspan -->
<div class="glossymenu">
<a class="menuitem" href="http://www.dynamicdrive.com/">Dynamic Drive</a>
<a class="menuitem submenuheader" href="http://www.dynamicdrive.com/style/"><span class="accordprefix"></span>CSS Examples<span class="accordsuffix"><img alt="" src="../img/plus.gif" class="statusicon" id="IMG1"/></span></a>
<div style="display: none;" class="submenu">
    <ul>
    
    <%        
                    set ob_conn=server.createobject("ADODB.connection")
        Ob_conn.open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("../../Base_Datos/Kroma_bd.mdb") & ";")

        ob_rs = ob_conn.Execute("SELECT * FROM T_claseproducto INNER JOIN t_tipoproducto ON t_claseproducto.c_idtipo=cstr(T_tipoproducto.c_idtipo) where t_claseproducto.c_idtipo='" & clase & "'")
                    'set ob_rs=ob_conn.Execute("SELECT * FROM T_producto INNER JOIN t_claseproducto ON t_producto.c_idclase=cstr(T_claseproducto.c_idclase) where t_claseproducto.c_idtipo='" & clase & "'")
            if ob_rs.eof  then%>
          nada
                <%else    %>
                <%
                    do while not ob_rs.eof
                    set ob_rs2=ob_conn.Execute("SELECT * FROM T_subclase where c_idclase='" & ob_rs("c_idclase") & "'")
                    %>
                    <li><a href="file:///D|/coma/Html/new/sp-productos2.asp?idclase=<%=ob_rs("c_idclase")%>&amp;idtipo=1" class="subexpandable"><%=ob_rs("c_clase")%></a></li>
                        <ul class="subcategoryitems" style="margin-left: 15px">
                        <%do while not ob_rs2.eof%>
                        
                            <li><a href="file:///D|/coma/Html/new/sp-productos2.asp?idclase=<%=ob_rs("c_idclase")%>&amp;idsubclase=<%=ob_rs2("c_idsubclase")%>"><%=ob_rs2("c_subclase")%></a></li>
                        
                        <%ob_rs2.movenext
                        loop%>
                        </ul>
                    <%
                    ob_rs.movenext
                    loop%>
</ul>
                    <%ob_rs.close
                        ob_rs2.close
                    %>        
                    <%end if%>
<%        clase="1"
                    set ob_conn=server.createobject("ADODB.connection")
                    Ob_conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("../../Data/Kroma_bd.mdb") & ";"

                    set ob_rs=ob_conn.Execute("SELECT * FROM T_claseproducto INNER JOIN t_tipoproducto ON t_claseproducto.c_idtipo=cstr(T_tipoproducto.c_idtipo) where t_claseproducto.c_idtipo='" & clase & "'")
                    'set ob_rs=ob_conn.Execute("SELECT * FROM T_producto INNER JOIN t_claseproducto ON t_producto.c_idclase=cstr(T_claseproducto.c_idclase) where t_claseproducto.c_idtipo='" & clase & "'")
            if ob_rs.eof  then%>
          nada
                <%else    %>
                <%
                    do while not ob_rs.eof
                    set ob_rs2=ob_conn.Execute("SELECT * FROM T_subclase where c_idclase='" & ob_rs("c_idclase") & "'")
                    %>
                
                        <li><a href="file:///D|/KromaTelecom/Html/new/sp-productos2.asp?idclase=<%=ob_rs("c_idclase")%>&amp;idtipo=1" class="subexpandable"><%=ob_rs("c_clase")%></a></li>
                        <ul class="subcategoryitems" style="margin-left: 15px">
                        <%do while not ob_rs2.eof%>
                        
                            <li><a href="file:///D|/KromaTelecom/Html/new/sp-productos2.asp?idclase=<%=ob_rs("c_idclase")%>&amp;idsubclase=<%=ob_rs2("c_idsubclase")%>"><%=ob_rs2("c_subclase")%></a></li>
                        
                        <%ob_rs2.movenext
                        loop%>
                        </ul>
                    <%
                    ob_rs.movenext
                    loop%>
</ul>
                    <%ob_rs.close
                        ob_rs2.close
                    %>        
                    <%end if%>
<h3 class="menuheader"><a href="file:///D|/KromaTelecom/Html/new/sp-productos3.asp"><font face="trebuchet ms" color="#666666">Intercom</font></a></h3>
</div>                
</html> 
  #3 (permalink)  
Antiguo 12/07/2009, 11:41
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: menu desplegable dinamico

Sigo intentando hacer este menu dinamicamente (modificar todo los componentes del menu tanto botones como submenus por medio de una base de datos) a traves de asp.net y javascipt y no soy capaz de hacerlo si alguien me puede echar una mano para hacerlo se lo agradecería mucho ya que me es muy necesario. Muchas gracias y perdonar por insistir tanto.
  #4 (permalink)  
Antiguo 15/07/2009, 02:07
 
Fecha de Ingreso: mayo-2006
Mensajes: 178
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: menu desplegable dinamico

Yo lo tengo hecho para otro de dynamic drive:
http://www.dynamicdrive.com/dynamici...enu-bullet.htm

Te lo paso sencillo (también tengo código que lee desde SQL). La historia es contruir el código de esa web a traves de un literal

Codigo:

<HTML>
<HEAD>
<title>menu1</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
<link rel="stylesheet" type="text/css" href="menuvertical1.css" >
<script type="text/javascript" src="jquery-1.2.6.pack.js"></script>
<script type="text/javascript" src="ddaccordion.js"></script>
<script type="text/javascript">

ddaccordion.init({ //top level headers initialization
headerclass: "expandable", //Shared CSS class name of headers group that are expandable
contentclass: "categoryitems", //Shared CSS class name of contents group
revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click" or "mouseover
mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover
collapseprev: true, //Collapse previous content (so only one open at any time)? true/false
defaultexpanded: [0], //index of content(s) open by default [index1, index2, etc]. [] denotes no content
onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
animatedefault: false, //Should contents open by default be animated into view?
persiststate: false, //persist state of opened contents within browser session?
toggleclass: ["closeheader", "openheader"], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
//togglehtml: ["suffix", "rr", "ss"], //Additional HTML added to the header when it's collapsed and expanded, respectively ["position", "html1", "html2"] (see docs)
togglehtml: ["prefix", "<img src='images1/plusgreen.gif' class='statusicon'/>", "<img src='images1/minusgreen.gif' class='statusicon'/>"], //Additional HTML added to the header when it's collapsed and expanded, respectively ["position", "html1", "html2"] (see docs)
animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow"
oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
//do nothing
},
onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
//do nothing
}
})
ddaccordion.init({ //2nd level headers initialization
headerclass: "subexpandable", //Shared CSS class name of sub headers group that are expandable
contentclass: "subcategoryitems", //Shared CSS class name of sub contents group
revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click" or "mouseover
mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover
collapseprev: true, //Collapse previous content (so only one open at any time)? true/false
defaultexpanded: [], //index of content(s) open by default [index1, index2, etc]. [] denotes no content
onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
animatedefault: false, //Should contents open by default be animated into view?
persiststate: false, //persist state of opened contents within browser session?
toggleclass: ["opensubheader", "closedsubheader"], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
//togglehtml: ["none", "", ""], //Additional HTML added to the header when it's collapsed and expanded, respectively ["position", "html1", "html2"] (see docs)
/*togglehtml: ["prefix", " <img src='images/plus.gif'/> ", " <img src='images/minus.gif'/> "], //Additional HTML added to the header when it's collapsed and expanded, respectively ["position", "html1", "html2"] (see docs)*/
togglehtml: ["prefix", "<img src='images1/plusgreen.gif' class='statusiconsub'/>", "<img src='images1/minusgreen.gif' class='statusiconsub'/>"], //Additional HTML added to the header when it's collapsed and expanded, respectively ["position", "html1", "html2"] (see docs)
animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow"
oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
//do nothing
},
onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
//do nothing
}
})
</script>
</HEAD>
<body>

<form id="Form1" method="post" runat="server">
<div align="center">
<div class="arrowlistmenu">
<asp:Literal id="Literal1" runat="server"></asp:Literal>
</div>
<br>
<asp:button id="btnPosesion" runat="server" CssClass="miboton"></asp:button><BR><br>
<asp:LinkButton id="LinkButton1" runat="server" CssClass="milink">Finalizar aplicación</asp:LinkButton></div>
<BR><br>
</form>
</body>
</HTML>


Y en el codigo de atras:
Private Sub Page_Load(....) Handles MyBase.Load
If Not Page.IsPostBack Then
Literal1.Text = webmastermenu()
End If
End If
End Sub

Private Function webmastermenu() As String
webmastermenu = getelto(True, "Inicio", "Ir a pantalla inicial", "Ini_Webmaster_principal.aspx")

'1.- mensajes
webmastermenu += getelto(True, "Mensajes / Foros", "Acceso a escribir mensajes, bandeja entrada y bandeja salida", "")
webmastermenu += getelto(False, "Nuevo a master", "Escribir un mensaje nuevo a un Master", "/Mensajes/Mensajes_Nuevo.aspx?Modo=W")
webmastermenu += getelto(False, "Bandeja entrada", "Relación de mensajes que te han enviado otros usuarios", "/Mensajes/Mensajes_Bandeja_Entrada.aspx")
webmastermenu += getelto(False, "Bandeja salida", "Relación de mensajes enviados por ti a otros usuarios", "/Mensajes/Mensajes_Bandeja_Salida.aspx")
webmastermenu += getelto(False, "Acceso a Foros", "Acceso a los foros", "/Mensajes/foros.aspx")
webmastermenu += vbCrLf & "</ul>" 'cierre

'2.- Webmaster(2)
webmastermenu += getelto(True, "Gestión Colegios", "Acceso a los coles", "")
webmastermenu += getelto(False, "Listado centros", "Listado de todos los centros", "/Webmaster/lista_centros.aspx")
webmastermenu += getelto(False, "Opciones Aplicacion", "Opciones de comboBox, etc...", "/Webmaster/lista_opciones.aspx")
webmastermenu += getelto(False, "Listado tablas BD", "Listado de todas las tablas", "/webmaster/InfoTablas.aspx")
webmastermenu += getelto(False, "Listado errores", "", "/Webmaster/lista_errores.aspx")
webmastermenu += getelto(False, "SELECT...FROM", "", "/Webmaster/Select_From.aspx")
webmastermenu += vbCrLf & "</ul>" 'cierre

End Function


Private Function getelto(ByVal Espadre As Boolean, ByVal titulo As String, ByVal MiTooltip As String, ByVal url As String) As String

If Espadre = True Then
'padre
If url = "" Then
getelto = vbCrLf & vbCrLf & "<h3 class=""menuheader expandable"">" & titulo & "</h3>"
getelto += vbCrLf & "<ul class=""categoryitems"">"
Else
getelto = vbCrLf & "<a class=""menuheader"" target=""principal"" href=""" & url & """>" & titulo & "</a>"
End If
Else
'hijo
getelto += vbCrLf & "<li>"
getelto += "<a target=""principal"" title=""" & MiTooltip & """ href=""" & url & """>" & titulo & "</a>"
getelto += "</li>"
End If
End Function
Private Function geteltosub(ByVal Espadre As Boolean, ByVal titulo As String, ByVal MiTooltip As String, ByVal url As String) As String

If Espadre = True Then
'padre
geteltosub = vbCrLf & vbCrLf & "<li><a target=""principal"" title=""" & MiTooltip & """ href=""" & url & """ class=""subexpandable"">" & titulo & "</a></li>"
geteltosub += vbCrLf & "<ul class=""subcategoryitems"">"
Else
'hijo
geteltosub += vbCrLf & "<li>"
geteltosub += "<a target=""principal"" title=""" & MiTooltip & """ href=""" & url & """>" & titulo & "</a>"
geteltosub += "</li>"
End If
End Function
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:03.