Hi I need to create a multicolumn menu similar in design to the demo(https://www.telerik.com/demos/aspnet/prometheus/Menu/Examples/MultiColumnMenu/DefaultCS.aspx)
I need to populate the values dynamically though. I have been playing with it for awhile now and really came up with what seems like a hack. It almost works, I still have a lot to clean up and figure out. Before I waste a lot of time doing that… This is what I did so far. I have to create a class based on itemplate then build the template and add it to the radmenu control collection. Is this the right way to do it? Do you have examples of how to create the multi column menu dynamically (from a database). I couldn’t find anything.
This is what I have..
HTML:
<telerik:RadMenu ID="MainMenu" runat="server" Skin="Web20" CssClass="qsfexMenu">
<Items>
<telerik:RadMenuItem Text="TopMenuItem">
<Items>
<telerik:RadMenuItem CssClass="ProductsSection">
<ItemTemplate>
<div class="qsfexCustomMenuSection">
<a class="alink" style="color:Blue;" href="" id="SubMenuItemCol1" runat="server" >ddd</a>
</div>
</ItemTemplate>
</telerik:RadMenuItem>
</Items>
</telerik:RadMenuItem>
</Items>
</telerik:RadMenu>
Code:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
SetupMenu()
End If
End Sub
Sub SetupMenu()
' get menu items
Dim items As MenuItems = New MenuItems("989", "/M/C/MainMenu.ascx", DateTime.Today, "154")
For Each mItem As MenuItem In items
Dim item As RadMenuItem
item = New RadMenuItem
item.Text = mItem.MenuText
item.NavigateUrl = mItem.MenuUrl
If mItem.HasSubMenus Then
LoadChildMenus(item, mItem)
End If
MainMenu.Items.Add(item)
Next
End Sub
Sub LoadChildMenus(ByVal item As RadMenuItem, ByVal mItem As MenuItem)
If Not item Is Nothing Then
For Each m As MenuItem In mItem.SubMenuItems
Dim mct As MultiColumnTemplate = New MultiColumnTemplate()
mct.text = m.MenuText
mct.url = m.MenuUrl
Dim x As RadMenuItem = New RadMenuItem(m.MenuText, m.MenuUrl)
x.ItemTemplate = mct
x.CssClass = "ProductsSection"
item.Items.Add(x)
Next
End If
End Sub
Class MultiColumnTemplate
Implements ITemplate
Public text As String
Public url As String
Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
Dim menuText As String = text
Dim menuUrl As String = url
Dim a As HtmlAnchor = New HtmlAnchor()
a.InnerHtml = menuText
a.HRef = menuUrl
container.Controls.Add(a)
End Sub
End Class
Thanks for your help.