System.Web.UI.WebControls.MenuListRenderer.RenderMenuItem C# (CSharp) Method

RenderMenuItem() protected method

protected RenderMenuItem ( System.Web.UI.HtmlTextWriter writer, System.Web.UI.WebControls.MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc ) : void
writer System.Web.UI.HtmlTextWriter
item System.Web.UI.WebControls.MenuItem
vertical bool
notLast bool
isFirst bool
oc OwnerContext
return void
		protected override void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc)
		{
			Menu owner = Owner;
			bool displayChildren = owner.DisplayChildren (item);
			bool isDynamicItem = IsDynamicItem (owner, item);
			int itemLevel = item.Depth + 1;
			string str;
			
			writer.RenderBeginTag (HtmlTextWriterTag.Li);

			if (isDynamicItem)
				RenderSeparatorImage (owner, writer, oc.DynamicTopSeparatorImageUrl, true);
			else
				RenderSeparatorImage (owner, writer, oc.StaticTopSeparatorImageUrl, true);
			
			var linkStyle = new Style ();
			if (displayChildren && (isDynamicItem || itemLevel >= oc.StaticDisplayLevels))
				AddCssClass (linkStyle, isDynamicItem && haveDynamicPopOut ? "popout-dynamic" : "popout");
			AddCssClass (linkStyle, "level" + itemLevel);

			MenuItemStyleCollection levelStyles = oc.LevelMenuItemStyles;
			if (levelStyles != null && levelStyles.Count >= itemLevel) {
				MenuItemStyle style = levelStyles [itemLevel - 1];
				string cssClass = style.CssClass;
				if (!String.IsNullOrEmpty (cssClass))
					AddCssClass (linkStyle, cssClass);
			}

			if (owner.SelectedItem == item)
				AddCssClass (linkStyle, "selected");
			
			str = item.ToolTip;
			if (!String.IsNullOrEmpty (str))
				writer.AddAttribute ("title", str);
			linkStyle.AddAttributesToRender (writer);
			RenderItemHref (owner, writer, item);
			writer.RenderBeginTag (HtmlTextWriterTag.A);
			owner.RenderItemContent (writer, item, isDynamicItem);
			writer.RenderEndTag ();

			str = item.SeparatorImageUrl;
			if (String.IsNullOrEmpty (str)) {
				if (isDynamicItem)
					str = oc.DynamicBottomSeparatorImageUrl;
				else
					str = oc.StaticBottomSeparatorImageUrl;
			}
			RenderSeparatorImage (owner, writer, str, true);

			// if (itemLevel == 1)
			// 	writer.RenderEndTag (); // </li>
			
			if (displayChildren)
				owner.RenderMenu (writer, item.ChildItems, vertical, isDynamicItem, itemLevel, notLast);

			if (itemLevel > 1)
				writer.RenderEndTag (); // </li>
		}