Changing the radmenu css class(rmSlide) dynamically

1 posts, 0 answers
  1. ravi shankar
    ravi shankar avatar
    8 posts
    Member since:
    Feb 2010

    Posted 20 Sep 2010 Link to this post

    Hi Telerik,

    I am using radmenu control in my website which has 3 items namely podium,office and the forum as the top navigation items.all the top navigation items have subitems with different font,color,background image.

    I want to change the rmSlide class for each top navigation item.So that Podium  uses rmSlide,The Office uses rmSlide1 and The forum to uses rmSlide2.

    all the 3 dropdown has diffrent bg example podium(pink),office(blue) and the forum(brown).

    So Please help me to solve this issue.

    ACCX
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="QatarRadMenuBar.ascx.cs"
        Inherits="UserControls_QatarRadMenuBar" %>
    <%@ Register TagPrefix="telerik" Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" %>
    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false"
        StartFromCurrentNode="false" StartingNodeOffset="1" />
    <telerik:RadMenu runat="server" ID="menuTopNavigation">
        <DefaultGroupSettings RepeatColumns="2"  RepeatDirection="Horizontal" Height="259px" Width="159px"  />   
    </telerik:RadMenu>


    ASCX.cs
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using Telerik.Web.UI;
    using Telerik.Cms.Web;
    using System.Threading;
     
    public partial class UserControls_QatarRadMenuBar : System.Web.UI.UserControl
    {
        private string strLiStartMain = "<li class='firstLevel'>";
        private string strLiStartFirst = "<li class='secondLevel'>";
        private string strLiStartMainSelected = "<li class='firstLevelSelected'>";
        private string strLiStartFirstSelected = "<li class='secondLevelSelected'>";
     
        private string strLiStartMain1 = "<li class='firstLevel1'>";
        private string strLiStartFirst1 = "<li class='secondLevel1'>";
        private string strLiStartMainSelected1 = "<li class='firstLevelSelected1'>";
        private string strLiStartFirstSelected1 = "<li class='secondLevelSelected1'>";
     
        private string strEndLi = "</li>";
        private string strEndUl = "</ul>";
        private string strLiNextLevelSelected = string.Empty;
        private string strLiStartSecond = string.Empty;
        private string strUlStartMain = string.Empty;
        private string strUlStartSecond = string.Empty;
        private string strUlStartMainRight = string.Empty;
        private string strUlStartSecondRight = string.Empty;
     
     
     
        private string strLiNextLevelSelected1 = string.Empty;
        private string strLiStartSecond1 = string.Empty;
        private string strUlStartMain1 = string.Empty;
        private string strUlStartSecond1 = string.Empty;
        private string strUlStartMainRight1 = string.Empty;
        private string strUlStartSecondRight1 = string.Empty;
     
        protected void Page_Load(object sender, EventArgs e)
        {
            BuildQPMenu();
        }
     
        private void BuildQPMenu()
        {
            if (Resources.GlobalResource.Direction.ToUpper() == "RTL")
            {
                strLiNextLevelSelected = "<li style='padding-right:{0}px;background-position:{1}px center;' class='nextLevelSelected'>";
                strLiStartSecond = "<li style='padding-right:{0}px;background-position:{1}px center;' class='nextLevel'>";
                strUlStartMain = "<ul style='list-style: none; margin: 0;padding: 0 8px 0 30px;' class='levelBorder'>";
                strUlStartSecond = "<ul style='list-style: none; margin: 0;padding: 8px 10px 0 30px;' class='levelBorder'>";
     
                strUlStartMainRight = "<ul style='list-style: none; margin: 0;padding: 0 8px 0 30px;'>";
                strUlStartSecondRight = "<ul style='list-style: none; margin: 0;padding: 8px 10px 0 30px;'>";
     
            }
            else
            {
                strLiNextLevelSelected = "<li style='padding-left:{0}px;background-position:{1}px center;' class='nextLevelSelected'>";
                strLiStartSecond = "<li style='padding-left:{0}px;background-position:{1}px center;' class='nextLevel'>";
                strUlStartMain = "<ul style='list-style: none; margin: 0;padding: 0 30px 0 6px;' class='levelBorder'>";
                strUlStartSecond = "<ul style='list-style: none; margin: 0;padding: 0px 30px 0 6px;' class='levelBorder'>";
                strUlStartMainRight = "<ul style='list-style: none; margin: 0;padding: 0 30px 0 6px;' class='levelBorder'>";
                strUlStartSecondRight = "<ul style='list-style: none; margin: 0;padding: 0px 30px 0 6px;' >";
     
     
                strLiNextLevelSelected1 = "<li style='padding-left:{0}px;background-position:{1}px center;' class='nextLevelSelected1'>";
                strLiStartSecond1 = "<li style='padding-left:{0}px;background-position:{1}px center;' class='nextLevel1'>";
                strUlStartMain1 = "<ul style='list-style: none; margin: 0;padding: 0 30px 0 6px;' class='levelBorder1'>";
                strUlStartSecond1 = "<ul style='list-style: none; margin: 0;padding: 0px 30px 0 6px;' class='levelBorder1'>";
                strUlStartMainRight1 = "<ul style='list-style: none; margin: 0;padding: 0 30px 0 6px;' class='levelBorder1'>";
                strUlStartSecondRight1 = "<ul style='list-style: none; margin: 0;padding: 0px 30px 0 6px;' >";
     
            }
            menuTopNavigation.Items.Clear();
            SiteMapNodeCollection topNodecollection = SiteMapDataSource1.Provider.GetChildNodes(SiteMapDataSource1.Provider.RootNode);
            if (topNodecollection.Count > 0)
            {
                string numbers = "";
                foreach (SiteMapNode toplevel in topNodecollection[0].ChildNodes)//topNodecollection[0] is [SiteMap]
                {
                    RadMenuItem itemtoplevel = new RadMenuItem(toplevel.Title.ToUpper(), this.ResolveUrl(toplevel.Url));               
                    if (toplevel.Url.Contains("Podium"))
                    {
                        itemtoplevel.GroupSettings.RepeatColumns = 4;
                        itemtoplevel.Text= "<span style='font-size:10px;'>THE</span> Podium";
                        numbers = "";
                    }
                    else if (toplevel.Url.Contains("Office"))
                    {
                        itemtoplevel.GroupSettings.RepeatColumns = 5;
                        itemtoplevel.Text = "<span style='font-size:10px;'>THE</span> Office";
                        numbers = "1";
                    }
                    else if (toplevel.Url.Contains("Forum"))
                    {
                        itemtoplevel.GroupSettings.RepeatColumns = 1;
                        itemtoplevel.Text = "<span style='font-size:10px;'>THE</span> Forum";
                        numbers = "2";
                    }
                    menuTopNavigation.Items.Add(itemtoplevel);
                    if (HttpContext.Current.Request.FilePath.ToUpper().Contains(itemtoplevel.NavigateUrl.ToUpper().Replace(".ASPX", "")))
                    {
                        itemtoplevel.CssClass = "RadTopLevelItemSelected";
                       
                    }
                    if (toplevel.HasChildNodes)
                    {
                        int secondlevelcount = 0;
                        foreach (SiteMapNode secondlevel in toplevel.ChildNodes)
                        {
                            if (UserHasPermission(secondlevel))
                            {
                                RadMenuItem itemsecondlevel = new RadMenuItem();
                                //itemsecondlevel.Width = Unit.Pixel(222);
                                LiteralControl liUlStart = null;
     
                                if (secondlevelcount < menuTopNavigation.DefaultGroupSettings.RepeatColumns)// only for first items for RepeatColumns add top padding
                                {
                                    if (secondlevelcount == 0 || (secondlevelcount % 2 == 0))
                                    {
                                        if (toplevel.ChildNodes.Count >= menuTopNavigation.DefaultGroupSettings.RepeatColumns)
                                        {
                                            if (numbers == "1")
                                            {
                                                liUlStart = GetLiteralControl(strUlStartMain1);
                                            }
                                            else
                                            {
     
                                                liUlStart = GetLiteralControl(strUlStartMain);
                                            }
                                        }
                                        else
                                        {
                                            if (numbers == "1")
                                            {
                                                liUlStart = GetLiteralControl(strUlStartMainRight1);
                                            }
                                            else
                                            {
                                                liUlStart = GetLiteralControl(strUlStartMainRight);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if (numbers == "1")
                                        {
                                            liUlStart = GetLiteralControl(strUlStartMainRight1);
                                        }
                                        else
                                        {
                                            liUlStart = GetLiteralControl(strUlStartMainRight);
                                        }
                                    }
     
                                }
                                else
                                {
                                    if (secondlevelcount == 0 || (secondlevelcount % 2 == 0))
                                    {
                                        if (toplevel.ChildNodes.Count >= menuTopNavigation.DefaultGroupSettings.RepeatColumns)
                                        {
                                            if (numbers == "1")
                                            {
                                                liUlStart = GetLiteralControl(strUlStartSecond1);
                                            }
                                            else
                                            {
                                                liUlStart = GetLiteralControl(strUlStartSecond);
                                            }
                                        }
                                        else
                                        {
                                            if (numbers == "1")
                                            {
                                                liUlStart = GetLiteralControl(strUlStartMainRight1);
                                            }
                                            else
                                            {
                                                liUlStart = GetLiteralControl(strUlStartMainRight);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if (numbers == "1")
                                        {
                                            liUlStart = GetLiteralControl(strUlStartSecondRight1);
                                        }
                                        else
                                        {
                                            liUlStart = GetLiteralControl(strUlStartSecondRight);
                                        }
                                    }
     
                                }
     
                                itemsecondlevel.Controls.Add(liUlStart);
                                if (HttpContext.Current.Request.FilePath.ToUpper().Contains(this.ResolveUrl(secondlevel.Url).ToUpper().Replace(".ASPX", "")))
                                {
                                    if (numbers == "1")
                                    {
                                        itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartMainSelected1));
                                    }
                                    else
                                    {
                                        itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartMainSelected));
                                    }
                                }
                                else
                                {
                                    if (numbers == "1")
                                    {
                                        itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartMain1));
                                    }
                                    else
                                    {
                                        itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartMain));
                                    }
                                }
                                itemsecondlevel.Controls.Add(GetNavigatingHyperlink(secondlevel.Key, secondlevel.Title, secondlevel.Url));
                                itemsecondlevel.Controls.Add(GetLiteralControl(strEndLi));
     
                                if (secondlevel.HasChildNodes)
                                {
                                    foreach (SiteMapNode thirdlevel in secondlevel.ChildNodes)
                                    {
                                        if (UserHasPermission(thirdlevel))
                                        {
                                            if (HttpContext.Current.Request.FilePath.ToUpper().Contains(this.ResolveUrl(thirdlevel.Url).ToUpper().Replace(".ASPX", "")))
                                            {
                                                if (numbers == "1")
                                                {
                                                    itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartFirstSelected1));
                                                }
                                                else
                                                {
                                                    itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartFirstSelected));
                                                }
                                            }
                                            else if (thirdlevel.HasChildNodes)
                                            {
                                                if (HttpContext.Current.Request.FilePath.ToUpper().Contains(this.ResolveUrl(thirdlevel.Url.Substring(0, thirdlevel.Url.LastIndexOf("/"))).ToUpper().Replace(".ASPX", "")))
                                                {
                                                    if (numbers == "1")
                                                    {
                                                        itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartFirstSelected1));
                                                    }
                                                    else
                                                    {
                                                        itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartFirstSelected));
                                                    }
                                                }
                                                else
                                                {
                                                    if (numbers == "1")
                                                    {
                                                        itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartFirst1));
                                                    }
                                                    else
                                                    {
                                                        itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartFirst));
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                if (numbers == "1")
                                                {
                                                    itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartFirst1));
                                                }
                                                else
                                                {
                                                    itemsecondlevel.Controls.Add(GetLiteralControl(strLiStartFirst));
                                                }
                                            }
                                            itemsecondlevel.Controls.Add(GetNavigatingHyperlink(thirdlevel.Key, thirdlevel.Title, thirdlevel.Url));
                                            itemsecondlevel.Controls.Add(GetLiteralControl(strEndLi));
                                            if (thirdlevel.HasChildNodes)
                                            {
                                                AddNextLevels(ref itemsecondlevel, thirdlevel, 0,numbers);
                                            }
                                        }
                                    }
                                }
                                itemsecondlevel.Controls.Add(GetLiteralControl(strEndUl));
                                itemtoplevel.Items.Add(itemsecondlevel);
                                secondlevelcount++;
                            }
                        }
                    }
                }
            }
        }
        private bool UserHasPermission(SiteMapNode node)
        {
            return node.IsAccessibleToUser(HttpContext.Current);
        }
        private void AddNextLevels(ref RadMenuItem itemsecondlevel, SiteMapNode nextLevelNode, int count,string numbers)
        {
            LiteralControl liStart = null;
            foreach (SiteMapNode currentNode in nextLevelNode.ChildNodes)
            {
                if (UserHasPermission(currentNode))
                {
     
     
                    if (Resources.GlobalResource.Direction.ToUpper() == "RTL")
                    {
                        if (HttpContext.Current.Request.FilePath.ToUpper().Contains(this.ResolveUrl(currentNode.Url).ToUpper().Replace(".ASPX", "")))
                        {
                            if (numbers == "1")
                            {
     
                                liStart = GetLiteralControl(string.Format(strLiNextLevelSelected1, 40 + (10 * count), 144 - (10 * count)));
                            }
                            else
                            {
                                liStart = GetLiteralControl(string.Format(strLiNextLevelSelected, 40 + (10 * count), 144 - (10 * count)));
                            }
     
                        }
                        else
                        {
                            if (numbers == "1")
                            {
                                liStart = GetLiteralControl(string.Format(strLiStartSecond1, 40 + (10 * count), 144 - (10 * count)));
                            }
                            else
                            {
                                liStart = GetLiteralControl(string.Format(strLiStartSecond, 40 + (10 * count), 144 - (10 * count)));
                            }
                        }
                    }
                    else
                    {
                        if (HttpContext.Current.Request.FilePath.ToUpper().Contains(this.ResolveUrl(currentNode.Url).ToUpper().Replace(".ASPX", "")))
                        {
                            if (numbers == "1")
                            {
                                liStart = GetLiteralControl(string.Format(strLiNextLevelSelected1, 30 + (10 * count), 22 + (10 * count)));
                            }
                            else
                            {
                                liStart = GetLiteralControl(string.Format(strLiNextLevelSelected, 30 + (10 * count), 22 + (10 * count)));
                            }
     
                        }
                        else
                        {
                            if (numbers == "1")
                            {
                                liStart = GetLiteralControl(string.Format(strLiStartSecond1, 30 + (10 * count), 22 + (10 * count)));
                            }
                            else
                            {
                                liStart = GetLiteralControl(string.Format(strLiStartSecond, 30 + (10 * count), 22 + (10 * count)));
                            }
                        }
                    }
                    itemsecondlevel.Controls.Add(liStart);
                    itemsecondlevel.Controls.Add(GetNavigatingHyperlink(currentNode.Key, currentNode.Title, currentNode.Url));
                    itemsecondlevel.Controls.Add(GetLiteralControl(strEndLi));
                    if (currentNode.HasChildNodes)
                    {
                        count++;
                        AddNextLevels(ref itemsecondlevel, currentNode, count,numbers);
                    }
                }
            }
        }
     
        private LiteralControl GetLiteralControl(string text)
        {
            return new LiteralControl(text);
        }
     
        private HyperLink GetNavigatingHyperlink(string key, string text, string navigatingUrl)
        {
            HyperLink hlNavigator = new HyperLink();
            hlNavigator.ID = key;
            hlNavigator.NavigateUrl = navigatingUrl;
            hlNavigator.Text = text;
            return hlNavigator;
        }
     
    }


Back to Top