This is a migrated thread and some comments may be shown as answers.

[Solved] Rad menu not displaying the hierarchy

1 Answer 141 Views
Menu
This is a migrated thread and some comments may be shown as answers.
Madeshwaran
Top achievements
Rank 1
Madeshwaran asked on 16 Jun 2009, 09:34 PM

I am fairly new to Rad controls. When i try to bind the rad menu to the hierarchial data source it is not displaying in the hierarchial order but instead showed all the items in a single row.

 

I tried to run the sample code from telerik site. Even with the sample the rad menu shows the items in single row instead of hierarchial manner. Please help me in this...

ASPX Code:

<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> 
<%@ Page Language="c#" CodeFile="Default.aspx.cs" AutoEventWireup="true"   
Inherits="Telerik.Web.Examples.Menu.HierarchicalBinding.Default"%> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">  
<head id="Head1" runat="server">  
</head> 
<body class="BODY">  
    <form id="mainForm" method="post" runat="server">  
          
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">  
        </telerik:RadScriptManager> 
        <telerik:RadStyleSheetManager ID="RadStyleSheetManager1" runat="server">  
        </telerik:RadStyleSheetManager> 
       <telerik:RadMenu ID="RadMenu1" runat="server" EnableTheming="true"></telerik:RadMenu> 
 
    </form> 
</body> 
</html> 
CS Code:
using System;  
using System.Collections.Generic;  
using System.Configuration;  
using System.Data;  
using System.Data.SqlClient;  
using System.Web.UI.WebControls;  
 
using Telerik.Web.UI;  
using System.Collections;  
 
namespace Telerik.Web.Examples.Menu.HierarchicalBinding  
{  
    public partial class Default : System.Web.UI.Page  
    {  
        internal class SiteDataItem  
        {  
            private string _text;  
            private string _url;  
            private int _id;  
            private int? _parentId;  
 
            public string Text  
            {  
                get { return _text; }  
                set { _text = value; }  
            }  
 
            public string Url  
            {  
                get { return _url; }  
                set { _url = value; }  
            }  
 
            public int ID  
            {  
                get { return _id; }  
                set { _id = value; }  
            }  
 
            public int? ParentID  
            {  
                get { return _parentId; }  
                set { _parentId = value; }  
            }  
 
            public SiteDataItem(int id, int? parentId, string text, string url)  
            {  
                _id = id;  
                _parentId = parentId;  
                _text = text;  
                _url = url;  
            }  
        }  
 
          
        private void BindToIEnumerable()  
        {  
            List<SiteDataItem> siteData = new List<SiteDataItem>();  
 
            siteData.Add(new SiteDataItem(1, 0, "All Sites"""));  
            siteData.Add(new SiteDataItem(2, 1, "Search Engines"""));  
            siteData.Add(new SiteDataItem(3, 1, "News Sites"""));  
            siteData.Add(new SiteDataItem(4, 2, "Yahoo""http://www.yahoo.com"));  
            siteData.Add(new SiteDataItem(5, 2, "MSN""http://www.msn.com"));  
            siteData.Add(new SiteDataItem(6, 2, "Google""http://www.google.com"));  
            siteData.Add(new SiteDataItem(7, 3, "CNN""http://www.cnn.com"));  
            siteData.Add(new SiteDataItem(8, 3, "BBC""http://www.bbc.co.uk"));  
            siteData.Add(new SiteDataItem(9, 3, "FOX""http://www.foxnews.com"));  
 
            RadMenu1.DataTextField = "Text";  
            RadMenu1.DataNavigateUrlField = "Url";  
            RadMenu1.DataFieldID = "ID";  
            RadMenu1.DataFieldParentID = "ParentID";  
            RadMenu1.DataSource = siteData;  
            RadMenu1.DataBind();  
        }  
         
        protected void Page_Load(object sender, EventArgs e)  
        {  
            if (!Page.IsPostBack)  
            {  
                BindToIEnumerable();  
 
            }  
        }  
 
        
    }  
}  
 

1 Answer, 1 is accepted

Sort by
0
Madeshwaran
Top achievements
Rank 1
answered on 16 Jun 2009, 11:44 PM
I got it worked by adding the hierarchy building on own as mentioned in the function below. But still not clear why the data binding didn't give me the hierarchy.... :(
 protected void BuildMenu(List<SiteDataItem> MenuItems)  
        {  
            foreach (SiteDataItem menuItem in MenuItems)  
            {  
                RadMenuItem rmenuItem = RadMenu1.FindItemByValue(menuItem.ParentID.ToString());  
                if (rmenuItem != null)  
                {  
                    RadMenuItem childItem = new RadMenuItem(menuItem.Text);  
                    childItem.Value = menuItem.ID.ToString();  
                    rmenuItem.Items.Add(childItem);  
                }  
                else 
                {  
                    RadMenuItem rootItem = new RadMenuItem(menuItem.Text);  
                    rootItem.Value = menuItem.ID.ToString();  
                    RadMenu1.Items.Add(rootItem);  
                }  
            }  
        } 
Tags
Menu
Asked by
Madeshwaran
Top achievements
Rank 1
Answers by
Madeshwaran
Top achievements
Rank 1
Share this question
or