sábado, 12 de septiembre de 2009

Data Provider Genexus X

La idea de este post no es enseñar lo que es un Data Provider, que es uno de los tipos de objetos nuevos en Genexus, sino solamente dar un pequeño ejemplo de como utilizarlo para tener en nuestra aplicación un menú superior.


El menú superior va a ser el clásico Dolphin menu, que se puede agregar como un User Control, por lo que debe de ser el mas usado hasta el momento.

Para empezar hay que agregar el usar control en nos guste, casi con seguridad va a ser en una Máster Page, con solo agregar el control se genera el objeto DPDolphinMenuData que es el dataprovider que vamos a modificar.

Como vemos ya se crea con un ejemplo, pero es muy estático, si queremos algo mas dinámico y que se cargue de una tabla debemos de modificarlo un poco.

Entonces supongamos que tenemos una tabla menú, en la que tenemos un MenuCodigo, MenuNombre, MenuDescripcion, MenuEstado, y MenuPrograma, la frutilla en la torta seria tener un MenuSeguridad, pero eso lo dejo para que ustedes lo hagan.

El código que tendría nuestro D.P. seria el siguiente


MenuData

{

MenuDataItem

where MenuEstado = 'A' // Activo

{

MenuID = MenuCodigo

MenuTitle = MenuTitle

MenuDescription = MenuDescription

MenuURL = MenuURL

}

}

Con esto lo que hacemos es recorrer toda la taba Menú, y a los ítems que están activos los cargamos al dataprovider, y con esto ya podemos mostrar esto en nuestra web.


6 comentarios:

Anónimo dijo...

Para el caso de que tengo dos tipos de usuarios distintos, Como puedo hacer para que uno vea un menu y otros otro menu.

Agradezco la ayuda.

SDs.

victor dijo...

Una pregunta, como pondrias para que el menú tenga submenus, lo intento pero no me queda. Te agradeceria mucho tu ayuda.
De antemano gracias

Néstor Lesna dijo...

Víctor, con Dolphin creo que no puedes tener submenus, pero fijate en la pagina de genexus, que hay otros User Controls que si tienen submenu, lo que yo implemente es utilizar un menú arriba y luego dependiendo de ese menú, tener un menú izquierdo (si queres un ejemplo www.juegauruguay.net)

Néstor Lesna dijo...

Anónimo, no había visto tu comentario. No entiendo mucho el tema de 2 tipos de usuarios, si lo que queres es que determiados usuarios (administradores por ejemplo) vean un menu, por ejemplo de un color, y otros usuarios (los normales) vean otro menú, entonces vas a tener que crear una tabla, poner un tipo de menú dentro, y otra tabla con el otro menú, uno se carga con un sdt y el otro con otro, y dependiendo del usuario se pone visible una tabla u otra. Si lo que queres es si sos administrador cargar determinados campos, o si sos usuario cargar otros con un simple if lo solucionas, o si tu tabla del menu tienen que usuarios los ven, con un where.

victor dijo...

Yo lo que quiero hacer es que dependiendo el perfil del usuario me muestre las opciones. Eso ya lo logro,el detalle es que quiero que sea un menu con submenus, ahorita lo que me hace es ponerlos todos en linea o poner algunos como submenus pero me repite las opciones, yo lo estoy haciendo con un JSCookMenu.

Néstor Lesna dijo...

Si, JsCookMenu, te ofrece los submenu, pero para eso o lo haces estático, y metes en el código cuales son padres y cuales hijos, o te definís una estructura que refleje el tema de padre e hijo, y ademas poner o algo de seguridad o algo de tipo de usuario en la estructura. Yo te aconsejo tener una tablita para esto, la cual tenga una clave, y algo estilo padre que apunte a una clave (este registro seria el hijo de un padre), y ademas poner en el registro algo estilo tipo de usuario.