2008-09-19 34 views

Respuesta

29

He encontrado esta pregunta al buscar la misma respuesta ... todo el mundo dice es posible, pero nadie da la verdadera solución! Me parece que tienen que trabajar ahora de manera pensé que había puesto mis hallazgos ...

cosas que necesitaba:

Mi terminado Masterpage.master tiene la etiqueta head siguiente:

<head runat="server"> 
    <script type="text/javascript" src="/script/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript" src="/script/superfish.js"></script> 
    <link href="~/css/superfish.css" type="text/css" rel="stylesheet" media="screen" runat="server" /> 
    <script type="text/javascript"> 

     $(document).ready(function() { 
     $('ul.AspNet-Menu').superfish(); 
     }); 

</script> 
</head> 

que es básicamente todo el material necesario para el menú jQuery Superfish a trabajar. Dentro de la página (en el menú va) es el siguiente (en base a these instructions):

<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server" 
    ShowStartingNode="false" /> 
<asp:Menu ID="Menu1" runat="server" 
    DataSourceID="SiteMapDataSource" 
    Orientation="Horizontal" CssClass="sf-menu"> 
</asp:Menu> 

Sobre la base de la documentación, esto parece que debería funcionar - pero no es así. La razón es que el CssClass="sf-menu" se sobrescribe cuando se representa el menú y la etiqueta <ul> obtiene un class="AspNet-Menu". Pensé que la línea $('ul.AspNet-Menu').superfish(); ayudaría, pero no fue así.

una cosa más

Aunque se trata de un truco (y por favor, que alguien me apunta a la solución correcta) que era capaz de conseguir que funcione abriendo el archivo y superfish.cssbúsqueda y sustitución deSF- menú con AspNet-Menú ... y listo! el menú apareció. Pensé que habría alguna configuración de configuración en el control asp:Menu donde podría establecer la clase <ul> pero no encontré ninguna pista a través de google.

+0

¡Fantástico! He estado buscando una respuesta desde que hice esta pregunta por primera vez. –

+0

He cargado un proyecto de ejemplo con todos los archivos necesarios http://conceptdevelopment.net/Fun/Superfish – Conceptdev

+0

En cuanto a las clases de CSS, tiene razón en que no son configurables. Los nombres de clase están codificados en el código CSSFriendly. Podrías descargar el código fuente, modificar las clases y reconstruir los archivos DLL si realmente quisieras, pero creo que tu camino es mucho más simple. –

0

El control SiteMapDataSource debe poder vincularse a cualquier control jerárquico vinculado a datos. No estoy familiarizado con superfish pero sé que hay muchos controles jQueryish para hacer esto.

2

Parece que necesita generar una UL para Superfish. Debería poder hacer esto con ASP.Net desde su mapa del sitio. Creo que el control del mapa del sitio hará algo como esto. De lo contrario, debería ser bastante trivial llamar al mapa del sitio directamente desde C# y generar el DOM mediante programación. Puede crear un control de usuario para hacer esto, o hacerlo en la página maestra.

Consulte this MSDN article sobre cómo enumerar los nodos en el mapa de su sitio mediante programación.

3

Sí, es totalmente posible.

Lo he usado con el ASP: control de menú y jQuery 1.2.6 con el complemento Superfish. Tenga en cuenta que necesitará el ASP.NET 2.0 CSS Friendly Control Adapters.

ASP.NET genera el ASP: control de menú como un diseño de tabla. El adaptador de control amigable de CSS hará que ASP.NET genere el ASP: control de menú como un diseño UL/LI dentro de un div.

Esto permitirá una fácil integración del plugin jQuery y Superfish porque el plugin Superfish se basa en un diseño UL/LI.

1

Recuerde agregar clases css para elementos NonLink. Los elementos de css Superfish no se ajustan a ellos. Y si eres como yo y tienes un menú raíz que no son enlaces, entonces rinde horriblemente. Simplemente agregue elementos AspNet-Menu-NonLink al archivo superfish.css y debería funcionar bien.

0

he creado un proyecto de ejemplo poco aseado que puede utilizar en http://simplesitemenu.codeplex.com/

Es un control compuesto que genera una lista/LI anidada UL de su mapa del sitio.

¡Disfrútalo!

Cuestiones relacionadas