
Navigator : Home > Tutorials > Website Navigation Tutorials > ...
Controlling Menus Programmatically in ASP.NET and C#
This tutorial shows how we can use two Menu controls to display the SiteMap in a hierarchical structure. The second menu's display will depend upon the selection of the first menu. C# version.
We need to create a Web.sitemap:
<?xml version="1.0" encoding="utf-8" ?> <siteMap>
<siteMapNode title="Home">
<siteMapNode title="Products">
<siteMapNode title="Hardware" url="Default.aspx?node=hardware">
<siteMapNode title="Monitors"/> <siteMapNode title="Speakers"/> <siteMapNode title="Input Devices"/> <siteMapNode title="Printers"/> <siteMapNode title="Hard Drives"/> </siteMapNode> <siteMapNode title="Software" url="Default.aspx?node=software">
<siteMapNode title="Operating Systems"/> <siteMapNode title="Email"/> <siteMapNode title="Internet"/> <siteMapNode title="Word Processor"/> <siteMapNode title="Database"/> </siteMapNode> <siteMapNode title="How-Tos" url="Default.aspx?node=howtos">
<siteMapNode title="How To Program"/> <siteMapNode title="How To Debug"/> <siteMapNode title="How To Test"/> </siteMapNode> </siteMapNode> <siteMapNode title="Services">
<siteMapNode title="Consultation" url="Default.aspx?node=consultation">
<siteMapNode title="Processes"/> <siteMapNode title="Management"/> <siteMapNode title="Recruiting"/> </siteMapNode> <siteMapNode title="Development" url="Default.aspx?node=development">
<siteMapNode title="Web Apps"/> <siteMapNode title="Enterprise Apps"/> <siteMapNode title="Database"/> </siteMapNode> </siteMapNode> <siteMapNode title="Support">
<siteMapNode title="Downloads" url="Default.aspx?node=downloads">
<siteMapNode title="Audio Drivers"/> <siteMapNode title="Network Adapter Drivers"/> <siteMapNode title="Printer Drivers"/> <siteMapNode title="Graphics Drivers"/> </siteMapNode> <siteMapNode title="Manuals" url="Default.aspx?node=manuals">
<siteMapNode title="Applications"/> <siteMapNode title="Troubleshooting"/> <siteMapNode title="Installation"/> <siteMapNode title="Internet"/> </siteMapNode> </siteMapNode> </siteMapNode> </siteMap> |
Try Server Intellect for Windows Server Hosting. Quality and Quantity!
There are two SiteMapDataSources; one for the first menu, and one for the second menu. The second SiteMapDataSource has the StartingNodeUrl set to
Default.aspx?node=hardware
The ASPX code:
<form id="form1" runat="server"> <div>
<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1" MaximumDynamicDisplayLevels="0" OnMenuItemClick="Menu1_MenuItemClick" Orientation="Horizontal">
<DataBindings>
<asp:MenuItemBinding DataMember="SiteMapNode" TextField="Title" /> </DataBindings> </asp:Menu> <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="False" /> <br /> <asp:Menu ID="Menu2" runat="server" DataSourceID="SiteMapDataSource2" Orientation="Horizontal"> </asp:Menu> <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" ShowStartingNode="False" StartingNodeOffset="-1" StartingNodeUrl="Default.aspx?node=hardware" /> <br /> <br /> </div> </form> |
The C# code for the Click event for the first menu should look something like this:
Need help with Windows Dedicated Hosting? Try Server Intellect. I'm a happy customer!
protected void Menu1_MenuItemClick(object sender, MenuEventArgs e) {
switch(e.Item.Value) {
case "Products": SiteMapDataSource2.StartingNodeUrl = "Default.aspx?node=hardware"; return; case "Services": SiteMapDataSource2.StartingNodeUrl = "Default.aspx?node=consultation"; return; case "Support": SiteMapDataSource2.StartingNodeUrl = "Default.aspx?node=downloads"; return; } } |
Looking for the VB.NET 2005 Version? Click Here!
Looking for more ASP.NET Tutorials? Click Here!