Wednesday, October 10, 2012

How Dynamically Make and show ASP.NET Menu Items using XML Datasource


How Dynamically Make and show ASP.NET Menu Items using XML Datasource

i want to make asp.net menu dynamically using ms sql 2005 db   i could just find these codes for getting items in the hierarchical schema,any one knows how to bind it to asp.net menu using XML datasource? 
Code to be put in ASPX file....

<asp:Menu ID="Menu1" runat="server" MaximumDynamicDisplayLevels="4" StaticDisplayLevels="2"
            DynamicHorizontalOffset="1" DynamicVerticalOffset="1" StaticEnableDefaultPopOutImage="false"
            Orientation="Horizontal">
            <StaticHoverStyle CssClass="menuBarHover" />
            <DynamicHoverStyle CssClass="menuBarHover" />
            <StaticMenuItemStyle CssClass="menuItem" />
            <DynamicMenuItemStyle CssClass="menuItemDynamic" />
            <DataBindings>
                <asp:MenuItemBinding DataMember="Menu" TextField="text" ValueField="text" NavigateUrlField="url" />
                <asp:MenuItemBinding DataMember="SubMenu" NavigateUrlField="url" TextField="text"
                    ValueField="text" />
            </DataBindings>
        </asp:Menu>



Code to be put in ASPX.CS file (server side code)
string xmlPath = Server.MapPath("~/App_Data/XMLMenu.xml");

        XmlDataSource xmlDS = new XmlDataSource();
        xmlDS.DataFile = xmlPath;
     
        xmlDS.XPath = "Home/Role[@id='" + iRole + "']";

        Menu1.DataSource = xmlDS;
        Menu1.DataBind();
        Menu1.Items[0].Text="";
        Menu1.Items[0].Value="";
        Menu1.Items[0].Selectable=false;
Add XML File Used in this Code 
<?xml version="1.0" encoding="utf-8" ?>
<Home>
    <Role id="1">
        <Menu text="Books" url="MenuFromXml.aspx">
            <SubMenu text="Asp.Net" url="MenuFromXml.aspx"></SubMenu>
            <SubMenu text="Ajax" url="MenuFromXml.aspx"></SubMenu>
            <SubMenu text="MS SQL Server 2005" url="MenuFromXml.aspx"></SubMenu>
            <SubMenu text="JavaScript" url="MenuFromXml.aspx"></SubMenu>
        </Menu>
        <Menu text="Electronics"  url="MenuFromXml.aspx">
            <SubMenu text="Camera" url="MenuFromXml.aspx">
                <SubMenu text="Digital" url="MenuFromXml.aspx">
                    <SubMenu text="Canon" url="MenuFromXml.aspx"></SubMenu>
                    <SubMenu text="Kodak" url="MenuFromXml.aspx"></SubMenu>
                    <SubMenu text="Sony" url="MenuFromXml.aspx"></SubMenu>
                    <SubMenu text="Casio" url="MenuFromXml.aspx"></SubMenu>
                    <SubMenu text="Fuji" url="MenuFromXml.aspx"></SubMenu>
                </SubMenu>
                <SubMenu text="Film Camera" url="MenuFromXml.aspx"></SubMenu>
            </SubMenu>
            <SubMenu text="DVDs" url="MenuFromXml.aspx">
                <SubMenu text="Comedy" url="MenuFromXml.aspx">
                    <SubMenu text="English" url="MenuFromXml.aspx"></SubMenu>
                    <SubMenu text="French" url="MenuFromXml.aspx"></SubMenu>
                    <SubMenu text="German" url="MenuFromXml.aspx"></SubMenu>
                    <SubMenu text="Spanish" url="MenuFromXml.aspx"></SubMenu>
                </SubMenu>
                <SubMenu text="Kids Movies" url="MenuFromXml.aspx"></SubMenu>
                <SubMenu text="Romance Movies" url="MenuFromXml.aspx"></SubMenu>
                <SubMenu text="Action Movies" url="MenuFromXml.aspx"></SubMenu>
            </SubMenu>
        </Menu>
        <Menu text="Contact Us" url="MenuFromXml.aspx"></Menu>
    </Role>
    <Role id="2">
        <Menu text="Books" url="MenuFromXml.aspx">
            <SubMenu text="Asp.Net" url="MenuFromXml.aspx"></SubMenu>
            <SubMenu text="Ajax" url="MenuFromXml.aspx"></SubMenu>
            <SubMenu text="MS SQL Server 2005" url="MenuFromXml.aspx"></SubMenu>
            <SubMenu text="JavaScript" url="MenuFromXml.aspx"></SubMenu>
        </Menu>
        <Menu text="Contact Us" url="MenuFromXml.aspx"></Menu>
    </Role>
</Home> 



No comments:

Post a Comment