Link to home
Start Free TrialLog in
Avatar of mathieu_cupryk
mathieu_cuprykFlag for Canada

asked on

Compile errors.

Error      2      'System.Web.SessionState.HttpSessionState' does not contain a definition for 'Item' and no extension method 'Item' accepting a first argument of type 'System.Web.SessionState.HttpSessionState' could be found (are you missing a using directive or an assembly reference?)      D:\inetpub\wwwroot\OmegaLove\Controls\ctrlBreadCrumb.ascx.cs      102      29      OmegaLove

-------------------------------------------------------------------------------------
 private void RemoveLowerLevelCrumbs()
        {

            short level = 0;
            ArrayList removalList = new ArrayList(_crumbList.Count);
            foreach (var level in _crumbList.Keys)
            {
                if ((level >= _level))
                {
                    removalList.Add(level);
                }
            }
            //Now remove all keys in the list
            foreach (var level in removalList)
            {
                _crumbList.Remove(level);
            }
        }

Error      7      A local variable named 'level' cannot be declared in this scope because it would give a different meaning to 'level', which is already used in a 'parent or current' scope to denote something else      D:\inetpub\wwwroot\OmegaLove\Controls\ctrlBreadCrumb.ascx.cs      154      26      OmegaLove
Error      8      Operator '>=' cannot be applied to operands of type 'object' and 'short'      D:\inetpub\wwwroot\OmegaLove\Controls\ctrlBreadCrumb.ascx.cs      156      22      OmegaLove




                //Check our Crumb is there in the session...if not create and add it...else get it
                if (Session.Item["HASH_OF_CRUMPS"] == null)
                {
                    _crumbList = new SortedList();
                    Session.Add("HASH_OF_CRUMPS", _crumbList);
                }
                else
                {
                    _crumbList = Session.Item("HASH_OF_CRUMPS");
                }
ASKER CERTIFIED SOLUTION
Avatar of guru_sami
guru_sami
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of mathieu_cupryk

ASKER

Error      1      Cannot implicitly convert type 'object' to 'System.Collections.SortedList'. An explicit conversion exists (are you missing a cast?)      D:\inetpub\wwwroot\OmegaLove\Controls\ctrlBreadCrumb.ascx.cs      135      34      OmegaLove


 protected void Page_Load(object sender, EventArgs e)
        {
            if (!(Page.IsPostBack))
            {

                //Minimum level is 1
                if ((_level <= 0))
                {
                    _level = 1;
                }

                //If no friendly name gives Untitled as default
                if ((string.IsNullOrEmpty(_tailName)))
                {
                    _tailName = "Untitled";
                }

                //Create a Crumb object based on the properties of this page
                _pageCrumb = new PageCrumb(_level, Request.RawUrl, _tailName);

                //Check our Crumb is there in the session...if not create and add it...else get it
                if (Session["HASH_OF_CRUMPS"] == null)
                {
                    _crumbList = new SortedList();
                    Session.Add("HASH_OF_CRUMPS", _crumbList);
                }
                else
                {
                    _crumbList = Session["HASH_OF_CRUMPS"];
                }

                //Now modify the List of the breadcrumb
                ModifyList();
                // Put the breadcrumb from the session of sortlist
                PutBreadCrumbs();


            }

        }

        private void ModifyList()
        {
            //Remove all Entries from the list which is higher or equal in level
            //Because at a level there can be max 1 entry in the list
            RemoveLowerLevelCrumbs();
            //If level is 1 set the Crumb as home
            if (_pageCrumb.Level == 1)
            {
                _crumbList.Clear();

                _crumbList.Add((short)1, new PageCrumb(1, "/Home.aspx", "Home"));
            }
            else
            {
                //If nothing in the list adds the home link first
                if (_crumbList.Count == 0)
                {
                    _crumbList.Add((short)1, new PageCrumb(1, "/Home.aspx", "Home"));
                }
                //Now add the present list also no other check is required here as we have cleaned up the
                //List at the start of the function
                _crumbList.Add(_level, _pageCrumb);
            }
        }
Error      7      A local variable named 'level' cannot be declared in this scope because it would give a different meaning to 'level', which is already used in a 'parent or current' scope to denote something else      D:\inetpub\wwwroot\OmegaLove\Controls\ctrlBreadCrumb.ascx.cs      154      26      OmegaLove

This is due to declaring "level" variable to times...:
           
 1 here --->         short level = 0;
            ArrayList removalList = new ArrayList(_crumbList.Count);
 2 here--->    foreach (var level in _crumbList.Keys)
            {

So change either of the variable name eg. level1 and level2
Error      8      Operator '>=' cannot be applied to operands of type 'object' and 'short'      D:\inetpub\wwwroot\OmegaLove\Controls\ctrlBreadCrumb.ascx.cs      156      22      OmegaLove

That is due to type mismatch :
----->  foreach (var level in _crumbList.Keys)
            {
                if ((level >= _level))
_level is short while level is object
So try like this:
foreach (short level in _crumbList.Keys)
            {
                if ((level >= _level))

Error      2      A local variable named 'level' cannot be declared in this scope because it would give a different meaning to 'level', which is already used in a 'parent or current' scope to denote something else      D:\inetpub\wwwroot\OmegaLove\Controls\ctrlBreadCrumb.ascx.cs      166      28      OmegaLove


using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Globalization;
using System.Diagnostics;
using System.Collections.ObjectModel;
using System.IO;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.SessionState;
using System.ComponentModel;

namespace OmegaLove.Web.UI
{
   
    public partial class ctrlBreadCrumb : OmegaLoveBasePageUserControl
    {
        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; }
            }
        }


        protected System.Web.UI.WebControls.Label lblTrail;
        //NOTE: The following placeholder declaration is required by the Web Form Designer.
        //Do not delete or move it.
        private System.Object designerPlaceholderDeclaration;

        //Variable holding the Link name of the page
        private string _tailName;

        //Variable holding the level of the page
        private short _level;

        //The pagecrumb object of the current page
        private PageCrumb _pageCrumb = new PageCrumb();

        //We will use a sorted list as we can use the level as key
        private SortedList _crumbList;


        //Each page has a level. The page should declare its level
        public short Level {
           // TO DO : We can check for some constraints here
           get { return _level; }
           set { _level = value; }
        }

        //Each page needs a meaningful name of it. Let them declare it
        public string TailName {
           // TO DO : We can check for some constraints here
           get { return _tailName; }
           set { _tailName = value; }
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
        }

        /// <summary>
        ///            Required method for Designer support - do not modify
        ///            the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
        }

        #endregion


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!(Page.IsPostBack))
            {

                //Minimum level is 1
                if ((_level <= 0))
                {
                    _level = 1;
                }

                //If no friendly name gives Untitled as default
                if ((string.IsNullOrEmpty(_tailName)))
                {
                    _tailName = "Untitled";
                }

                //Create a Crumb object based on the properties of this page
                _pageCrumb = new PageCrumb(_level, Request.RawUrl, _tailName);

       

                //Now modify the List of the breadcrumb
                ModifyList();
                // Put the breadcrumb from the session of sortlist
                PutBreadCrumbs();


            }

        }

        private void ModifyList()
        {
            //Remove all Entries from the list which is higher or equal in level
            //Because at a level there can be max 1 entry in the list
            RemoveLowerLevelCrumbs();
            //If level is 1 set the Crumb as home
            if (_pageCrumb.Level == 1)
            {
                _crumbList.Clear();

                _crumbList.Add((short)1, new PageCrumb(1, "/Home.aspx", "Home"));
            }
            else
            {
                //If nothing in the list adds the home link first
                if (_crumbList.Count == 0)
                {
                    _crumbList.Add((short)1, new PageCrumb(1, "/Home.aspx", "Home"));
                }
                //Now add the present list also no other check is required here as we have cleaned up the
                //List at the start of the function
                _crumbList.Add(_level, _pageCrumb);
            }
        }

        //Function will remove all the entries from the list which is higher or equal to the
        //present level
        private void RemoveLowerLevelCrumbs()
        {

            short level = 0;
            ArrayList removalList = new ArrayList(_crumbList.Count);
            foreach (short level in _crumbList.Keys)
            {
                if ((level >= _level))
                {
                    removalList.Add(level);
                }
            }
            //Now remove all keys in the list
            foreach (short level in removalList)
            {
                _crumbList.Remove(level);
            }
        }


        private void PutBreadCrumbs()
        {
            StringBuilder linkString = new StringBuilder();

            PageCrumb pageCrumb = new PageCrumb();
            int index = 0;

            for (index = 0; index <= _crumbList.Count - 2; index++)
            {
                pageCrumb = (PageCrumb)_crumbList.GetByIndex(index);
                linkString.Append(string.Format("<a href = {0} >{1} </a>", pageCrumb.Url, pageCrumb.LinkName));
                linkString.Append(" > ");
            }
            //Add the tail also
            pageCrumb = (PageCrumb)_crumbList.GetByIndex(index);
            linkString.Append(pageCrumb.LinkName);


            lblTrail.Text = linkString.ToString();
        }
    }
}
new question still not being solved.