Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/07/2007, 16:00
Avatar de zacktagnan
zacktagnan
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
Construir una lista dinámicamente

Hola a tod@s:

Estoy trabajando en un Sitio Web en ASP.NET 2.0 con código C#

Quisiera montar la siguiente lista de manera dinámica:
  • FICHEROS MAESTROS
    • Clientes
    • Ayuntamientos
    • Rutas
    • Municipios
    • Formas de Pago
    • Residuos
    • Vehículos
    • Repartidores
    • Comerciales
    • Empleados
  • ADMINISTRADOR
    • Usuarios
    • Perfiles
    • Menú
  • OPERATIVA
    • Clientes
      • Albarán
      • Pagos a Comerciales
    • Almacenes
      • Albaranes
      • Consultas
    • Ayuntamientos
      • Albaranes
      • Consultas
    • Mancomunidades
      • Albaranes
      • Consultas
    • Repartidores
      • Control
      • Consulta
    • Actividades
      • Generación de Residuos
      • Entregas Valorizador
    • Informes
    • Correspondencia
      • Clientes Pagadores
      • Ayuntamientos
  • MANUAL
  • SALIR

Todos los datos para montar vienen de una tabla [MENU] de la base de datos con esta estructura:
Código:
 CREATE TABLE MENU (mnu_id INT IDENTITY (1,1) NOT NULL,
 mnu_txt NVARCHAR(50) NOT NULL,
 mnu_title NVARCHAR(50) NULL,
 mnu_url NVARCHAR(50) NOT NULL CONSTRAINT DF_menu_mnu_url DEFAULT (('#')),
 mnu_nivel TINYINT NOT NULL,
 mnu_padre_id INT NOT NULL CONSTRAINT DF_menu_mnu_padre_id DEFAULT ((0)),
 mnu_perfiles NVARCHAR(25) NOT NULL,
 CONSTRAINT clave_menu PRIMARY KEY (mnu_id))
La descripción de algunos de los campos de la tabla es la siguiente:
- [mnu_txt] es el texto de la opción.
- [mnu_title] es el texto para la propiedad TITLE de la etiqueta A de vínculo (pues cada opción va vinculada a alguna página).
- [mnrl] es la ruta al vínculo deseado.
- [mnu_nivel] es un número indicador del nivel/subnivel en la que la opción se sitúa en la lista; por ejemplo las opciones como [FICHEROS MAESTROS] están a un nivel 0, una opción por debajo de ésta tendrá el nivel 1, debajo de ésta el nivel 2, etc...
- [mnu_padre_id], es el número para indicar cuál es el nivel padre de cada submenú. Las opciones de primer nivel, es decir nivel 0, no tienen padre y en este caso llevarán un 0 en este campo; los demás si son subniveles de otros llevarán en este campo el ID de los que sean sus padres, por ejemplo, la opción [Clientes] debajo de [Ficheros Maestros] lleva el 1 en este campo.

Como he dicho, quisiera saber como construir la lista deseada a través de los datos de la tabla.

En ASP 3.0 sabría hacerlo más ó menos a través de combinar varias consultas a la vez con varios recordset...
Pero con el ASP.NET 2.0, no llego a ver exactamente la manera, ya que en mi corta experiencia todas las consultas que se construyen se van cargando en controles web como GridView, FormView ó DropDownList.
Y aquí, no veo que sea ese el caso a menos que me equivoque

Si alguien me puede dar alguna pista sobre como construir la consulta, ... si con un objeto SqlDataSource ó con un SqlDataAdapter y DataSet ó con otros, y luego, sobre todo como ir cargando los datos montando el HTML de listas (ul y li) para conseguir la lista planteada.

Al final, esta lista, aplicándole una serie de estilos, se convierte en un menú desplegable.

Espero la(s) respuesta(s) de todo el que me pudiera ayudar...
__________________
Saludos,

zacktagnan.
=================================================

Última edición por zacktagnan; 20/07/2007 a las 16:15