The perfict example will be to populate data from a table that has a PK ID a ParentId that shows the which Parent Id the row belongs to and the Name.
In this example I wont be using a SQL Table but a Object List.
Cosider the following
private List<String> menu = new List<String>();
private List<MenuItem> menuList = new List<MenuItem>();
private Boolean flag = true;
protected void Page_Load(object sender, EventArgs e)
{
LoadMenu();
BuildMenu(0);
foreach (String item in menu)
{
litMenu.Text += item;
}
}
private void LoadMenu()
{
//List of MenuItem ID |ParentId |Name
//------------------------------------------------------
menuList.Add(new MenuItem(1, 0, "Home"));
menuList.Add(new MenuItem(2, 0, "Contact Us"));
menuList.Add(new MenuItem(3, 0, "About Us"));
menuList.Add(new MenuItem(4, 1, "Profile"));
menuList.Add(new MenuItem(5, 1, "Goal"));
menuList.Add(new MenuItem(6, 2, "Send Mail"));
menuList.Add(new MenuItem(7, 3, "What we do"));
menuList.Add(new MenuItem(8, 7, "Skinning"));
menuList.Add(new MenuItem(9, 7, "Milking"));
menuList.Add(new MenuItem(10, 3, "What we wont do"));
}
private void BuildMenu(int ParentId)
{
List<MenuItem> newList = (from p in menuList
where p.ParentId == ParentId
select p).ToList<MenuItem>();
if (newList.Count > 0)
{
for (int i = 0; i < newList.Count; i++)
{
if (i == 0)
{
menu.Add("<ul>");
}
menu.Add("<li>");
menu.Add(newList[i].MenuName);
BuildMenu(newList[i].ID);
menu.Add("</li>");
if (i == newList.Count - 1)
{
menu.Add("</ul>");
}
}
}
}
The ouput from the object list will be displayed as following- Home
- Profile
- Goal
- Contact Us
- Send Mail
- About Us
- What we do
- Skinning
- Milking
- What we wont do
- What we do
No comments:
Post a Comment