Hi,
I have implemented dynamic Mega Menu drop down using RadMenu control and sitemap as a datasource in my web site (Please see the currentMegaMenu.jpg for existing menu), but according client's requirements I have to design this menu according to attached screen shot (desiredMegaMenu.jpg).
Below is the code, which i am using for designing a MegaMenu dropdown:-
protected void asbsMenu_ItemDataBound(object sender, Telerik.Web.UI.RadMenuEventArgs e)
{
if (((SiteMapNode)(e.Item.DataItem)).ChildNodes.Count == 0)
{
return;
}
RadMenuItem childItem = new RadMenuItem();
e.Item.Items.Add(childItem);
using (MenuItemTemplate menuItemTemplate = new MenuItemTemplate())
{
menuItemTemplate.InstantiateIn(childItem);
}
}
class MenuItemTemplate : ITemplate, IDisposable
{
RadSiteMap subMenuSitemap;
SiteMapDataSource subMenuDS;
public void InstantiateIn(Control container)
{
RadMenuItem parentItem = (RadMenuItem)container.Parent;
SiteMapNode node = (SiteMapNode)parentItem.DataItem;
subMenuDS = new SiteMapDataSource();
subMenuDS.ID = parentItem.Text + "dataSource";
subMenuDS.StartingNodeUrl = parentItem.NavigateUrl;
subMenuDS.ShowStartingNode = true;
//add the SiteMapDataSource control to the container controls collection
container.Controls.Add(subMenuDS);
subMenuSitemap = new RadSiteMap();
subMenuSitemap.EnableEmbeddedBaseStylesheet = false;
subMenuSitemap.EnableEmbeddedSkins = false;
subMenuSitemap.ID = parentItem.TabIndex + "siteMap";
subMenuSitemap.DataSource = subMenuDS;
subMenuSitemap.LevelSettings.Add(new SiteMapLevelSetting(0));
subMenuSitemap.DefaultLevelSettings.ListLayout.RepeatColumns = 2;
subMenuSitemap.LevelSettings.Add(new SiteMapLevelSetting(1));
subMenuSitemap.DefaultLevelSettings.ListLayout.RepeatColumns = 2;
subMenuSitemap.DataBind();
subMenuSitemap.GetAllNodes()[0].Text = "";
//add the RadSiteMap control to the container controls collection
container.Controls.Add(subMenuSitemap);
}
I guess, some changes are required in the above lines in bold, Could you please confirm the changes?
Regards,
Gourav