Usando XML en el Control de Menu de ASP.Net 2.0
Decidi irme por la ultima opción, creo que puede ser más sencillo el modificar un archivo de xml en el caso de una actualizacion, que tener que generar una instruccion de sql para modificar la base de datos. El SiteMap, decidi que seria parte del control de navegacion y nada mas. De esta manera puedo tener diferentes opciones entre el menu y el sitemap.
Ya al estar programando, no encontraba la forma de que el menu se formara de manera correcta, el archivo xml de pruebas es el siguiente:
<?xml version="1.0" encoding="utf-8" ?>
<menu>
<category text="Pacientes">
<item text="Agregar Nuevo" url="~/pacientes/nuevo.aspx"></item>
<item text="Modificar" url="~/pacientes/modificar.aspx"></item>
<item text="Borrar" url="~/pacientes/borrar.aspx"></item>
</category>
<category text="Consultas">
<item text="Agregar Nuevo" url="~/pacientes/nuevo.aspx"></item>
<item text="Modificar" url="~/pacientes/modificar.aspx"></item>
<item text="Borrar" url="~/pacientes/borrar.aspx"></item>
</category>
</menu>
Puse el componente Menu Contro en el MasterPage de la siguiente manera:
<asp:Menu ID="Menu1" runat="server" DataSourceID="xmlSitioMapa" Orientation="Horizontal">
<DataBindings>
<asp:MenuItemBinding DataMember="item" NavigateUrlField="url" TextField="text" />
<asp:MenuItemBinding DataMember="category" TextField="text" />
</DataBindings>
</asp:Menu>
<asp:XmlDataSource ID="xmlSitioMapa" runat="server" DataFile="~/App_GlobalResources/xmlMenu.xml">
</asp:XmlDataSource>
Pero cuando se ejecutaba la aplicacion en lugar de tener las 2 opciones de Paciente | Consultas, solo obtenia un molesto menu, consulte algunas paginas de Google y encontre la modificación que se debia realizar en un ejemplo de Sonu Kapoor (http://www.xmlpitstop.com/ArticleManagement/DisplayArticle.aspx?ResourceID=83), el cual agrego al XPath para filtrar los datos, algo muy simple que hizo la diferencia:
<asp:Menu ID="Menu1" runat="server" DataSourceID="xmlSitioMapa" Orientation="Horizontal">
<DataBindings>
<asp:MenuItemBinding DataMember="item" NavigateUrlField="url" TextField="text" />
<asp:MenuItemBinding DataMember="category" TextField="text" />
</DataBindings>
</asp:Menu>
<asp:XmlDataSource ID="xmlSitioMapa" runat="server" DataFile="~/App_GlobalResources/xmlMenu.xml" XPath="menu/category">
</asp:XmlDataSource>
Y una vez que se ejecuta, se obtiene lo esperado
Listo!
Comentarios
Gracias