Hi,
I am trying to create breadcrumb. I found a solution from the following vb.net code:
http://www.codeguru.com/vb/vb_internet/aspnet/article.php/c6851#more
I am trying to convert the same to c#. I am getting various errors, like Cannot implicitly convert type 'object' to 'System.Collections.SortedList, and
Cannot implicitly convert type 'object' to 'BreadWeb.BreadCrumbUserControl.PageCrumb'. An explicit conversion exists (are you missing a cast?)
This is the code i am using in the usercontrol,which i created:
namespace BreadWeb
{
public partial class BreadCrumbUserControl : System.Web.UI.UserControl
{
public struct PageCrumb
{
private short _level;
private string _url;
private string _linkName;
public PageCrumb(short level, string url, string linkName)
{
_level = level;
_url = url;
_linkName = linkName;
}
public short Level
{
get { return _level; }
}
public string Url
{
get { return _url; }
}
public string LinkName
{
get { return _linkName; }
}
}
private PageCrumb _pageCrumb;
private SortedList _crumbList;
private string _tailName;
private short _level;
public short Level
{
get
{
return _level;
}
set
{
_level = value;
}
}
public string TailName
{
get
{
return _tailName;
}
set
{
_tailName = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!(Page.IsPostBack))
{
if ((_level <= 0))
{
_level = 1;
}
if ((_tailName == ""))
{
_tailName = "Untitled";
}
_pageCrumb = new PageCrumb(_level, Request.RawUrl, _tailName);
if (Session["HASH_OF_CRUMPS"] == null)
{
_crumbList = new SortedList();
Session.Add("HASH_OF_CRUMPS", _crumbList);
}
else
{
_crumbList = Convert.ToString(Session["HASH_OF_CRUMPS"]);
}
ModifyList();
PutBreadCrumbs();
}
}
private void ModifyList()
{
RemoveLowerLevelCrumbs();
if (_pageCrumb.Level == 1)
{
_crumbList.Clear();
_crumbList.Add((short)1, new PageCrumb(1, "/Home.aspx", "Home"));
}
else
{
if (_crumbList.Count == 0)
{
_crumbList.Add((short)1, new PageCrumb(1, "/Home.aspx", "Home"));
}
_crumbList.Add(_level, _pageCrumb);
}
}
private void RemoveLowerLevelCrumbs()
{
// short level;
ArrayList removalList = new ArrayList(_crumbList.Count);
foreach (short level in _crumbList.Keys) {
if ((level >= _level))
{
removalList.Add(level);
}
}
foreach (short level in removalList)
{
_crumbList.Remove(level);
}
}
private void PutBreadCrumbs()
{
System.Text.StringBuilder linkString = new System.Text.StringBuilder();
PageCrumb pageCrumb = new PageCrumb();
int index;
for (index = 0; index <= _crumbList.Count - 2; index++)
{
pageCrumb = _crumbList.GetByIndex(index);
linkString.Append(string.Format("<a href = {0} >{1} </a>", pageCrumb.Url, pageCrumb.LinkName));
linkString.Append(" > ");
}
pageCrumb = _crumbList.GetByIndex(index);
linkString.Append(pageCrumb.LinkName);
lblTrail.Text = linkString.ToString();
}
}
}
Where is the conversion I am missing.. Please help.
Thank you