APNSoft Controls []
Menu > Defining the Structure

APNSoft Menu uses XML for defining the structure since XML is the most convenient and widespread format for structured data. The XML Structure consists of elements (items and separators):

    <item title="Main Page" />
    <separator />
    <item title="About Us" />
    <item title="Products">
        <item title="Menu" />
        <item title="DataGrid" />
        <item title="TreeView" />
    <item title="Contacts" />

The code above creates the following menu (horizontal orientation):

Structure elements:

Menu element examples:

<item id="i1" title="Home" />
<item id="i1" title="Home" href="~/Default.aspx?ItemID=$ItemID$&amp;Rnd=$Rnd$" />
<item title="Google" href="http://www.google.com" target="_blank" />
<item title="JavaScript" ClientSideOnItemClick="alert('The $Title$ ($ItemID$) is clicked!');" />
<item title="New" icon="IconNew.gif" iconOver="IconNewActive.gif" roles="Admins, Owners" />
<item title="TV Schedule" Template="~/Templates/Template.ascx" />
<item image="Home.jpg" imageOver="HomeActive.jpg" />
<separator image="SeparatorVertical.jpg" />

Attention! Element names and attributes are case-sensitive. Be careful when you're typing in your data.

Applying the XML Structure or Data Source:

You can save the XML definition structure as a file and bind the menu by specifying the StructureFileURL property. APNSoft Menu has support to use the Web.sitemap file as a standard menu structure.

<APNSoft:APNSoftMenu id="myMenu" runat="server"
    StructureFileURL = "~/Structures/Menu.xml" />

You can also apply the XML Document with structure by using the DataSource property. If the menu loads structure from the database, you should set the DataSource property to specify a source of data and call the DataBind() method. To create an appropriate table in the SQL Server, use the following SQL command:

CREATE TABLE [dbo].[Items](
    [id] [nvarchar](20) NOT NULL,
    [pid] [nvarchar](20) NULL,
    [Type] [nvarchar](10) NOT NULL CONSTRAINT [DF_Items_Type] DEFAULT ('item'),
    [title] [nvarchar](250) NULL,
    [href] [nvarchar](250) NULL,
    [target] [nvarchar](100) NULL,
    [tooltip] [nvarchar](250) NULL,
    [icon] [nvarchar](100) NULL,
    [iconOver] [nvarchar](100) NULL,
    [iconWidth] [tinyint] NULL,
    [iconHeight] [tinyint] NULL,
    [image] [nvarchar](100) NULL,
    [imageOver] [nvarchar](100) NULL,
    [imageWidth] [tinyint] NULL,
    [imageHeight] [tinyint] NULL,
    [AutoPostBackOnItemClick] [bit] 
        NOT NULL CONSTRAINT [DF_Items_AutoPostBackOnItemClick] DEFAULT ((0)),
    [ClientSideOnItemClick] [nvarchar](250) NULL,
    [selected] [bit] NOT NULL CONSTRAINT [DF_Items_selected] DEFAULT ((0)),
    [CSS_ItemTD] [nvarchar](100) NULL,
    [CSS_ItemHoveredTD] [nvarchar](100) NULL,
    [CSS_ItemSelectedTD] [nvarchar](100) NULL,
    [CSS_SubMenuDIV] [nvarchar](100) NULL,
    [CSS_SeparatorTD] [nvarchar](100) NULL,
    [roles] [nvarchar](50) NULL,
    [Template] [nvarchar](255) NULL

You can also build up menu at runtime. APNSoft Menu provides an extremely rich and powerful server-side API allowing developer to add, remove or edit menu elements and element collections. You can programmatically control any item at runtime by using two classes MenuElement and MenuElementCollection.