private void BuildItem(MenuItem item, HtmlTextWriter writer) { Menu menu = Control as Menu; if ((menu != null) && (item != null) && (writer != null)) { writer.WriteLine(); writer.WriteBeginTag("li"); string theClass = (item.ChildItems.Count > 0) ? "AspNet-Menu-WithChildren" : "AspNet-Menu-Leaf"; string selectedStatusClass = GetSelectStatusClass(item); if (!String.IsNullOrEmpty(selectedStatusClass)) { theClass += " " + selectedStatusClass; } writer.WriteAttribute("class", theClass); writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); if (((item.Depth < menu.StaticDisplayLevels) && (menu.StaticItemTemplate != null)) || ((item.Depth >= menu.StaticDisplayLevels) && (menu.DynamicItemTemplate != null))) { writer.WriteBeginTag("div"); writer.WriteAttribute("class", GetItemClass(menu, item)); writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); MenuItemTemplateContainer container = new MenuItemTemplateContainer(menu.Items.IndexOf(item), item); if ((item.Depth < menu.StaticDisplayLevels) && (menu.StaticItemTemplate != null)) { menu.StaticItemTemplate.InstantiateIn(container); } else { menu.DynamicItemTemplate.InstantiateIn(container); } container.DataBind(); container.RenderControl(writer); writer.Indent--; writer.WriteLine(); writer.WriteEndTag("div"); } else { if (IsLink(item)) { writer.WriteBeginTag("a"); if (!String.IsNullOrEmpty(item.NavigateUrl)) { writer.WriteAttribute("href", Page.Server.HtmlEncode(menu.ResolveClientUrl(item.NavigateUrl))); } else { writer.WriteAttribute("href", Page.ClientScript.GetPostBackClientHyperlink(menu, "b" + item.ValuePath.Replace(menu.PathSeparator.ToString(), "\\"), true)); } writer.WriteAttribute("class", GetItemClass(menu, item)); WebControlAdapterExtender.WriteTargetAttribute(writer, item.Target); if (!String.IsNullOrEmpty(item.ToolTip)) { writer.WriteAttribute("title", item.ToolTip); } else if (!String.IsNullOrEmpty(menu.ToolTip)) { writer.WriteAttribute("title", menu.ToolTip); } writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); } else { writer.WriteBeginTag("span"); writer.WriteAttribute("class", GetItemClass(menu, item)); writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); } if (!String.IsNullOrEmpty(item.ImageUrl)) { writer.WriteBeginTag("img"); writer.WriteAttribute("src", menu.ResolveClientUrl(item.ImageUrl)); writer.WriteAttribute("alt", !String.IsNullOrEmpty(item.ToolTip) ? item.ToolTip : (!String.IsNullOrEmpty(menu.ToolTip) ? menu.ToolTip : item.Text)); writer.Write(HtmlTextWriter.SelfClosingTagEnd); } writer.Write(item.Text); if (IsLink(item)) { writer.Indent--; writer.WriteLine(); writer.WriteEndTag("a"); } else { writer.Indent--; writer.WriteLine(); writer.WriteEndTag("span"); } } if ((item.ChildItems != null) && (item.ChildItems.Count > 0)) { BuildItems(item.ChildItems, false, writer); } writer.Indent--; writer.WriteLine(); writer.WriteEndTag("li"); } }
private void BuildItem(MenuItem item, HtmlTextWriter writer) { Menu menu = Control as Menu; if ((menu != null) && (item != null) && (writer != null)) { writer.WriteLine(); writer.WriteBeginTag("li"); string liClass = GetItemClassForLi(item); if (!String.IsNullOrEmpty(liClass)) { writer.WriteAttribute("class", liClass); } writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); if (((item.Depth < menu.StaticDisplayLevels) && (menu.StaticItemTemplate != null)) || ((item.Depth >= menu.StaticDisplayLevels) && (menu.DynamicItemTemplate != null))) { writer.WriteBeginTag("div"); writer.WriteAttribute("class", GetItemClass(menu, item)); writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); MenuItemTemplateContainer container = new MenuItemTemplateContainer(menu.Items.IndexOf(item), item); if ((item.Depth < menu.StaticDisplayLevels) && (menu.StaticItemTemplate != null)) { menu.StaticItemTemplate.InstantiateIn(container); } else { menu.DynamicItemTemplate.InstantiateIn(container); } container.DataBind(); container.RenderControl(writer); writer.Indent--; writer.WriteLine(); writer.WriteEndTag("div"); } else { if (IsLink(item)) { writer.WriteBeginTag("a"); if (!String.IsNullOrEmpty(item.NavigateUrl)) { writer.WriteAttribute("href", Page.Server.HtmlEncode(menu.ResolveUrl(item.NavigateUrl))); } else { writer.WriteAttribute("href", Page.ClientScript.GetPostBackClientHyperlink(menu, "b" + item.ValuePath.Replace(menu.PathSeparator.ToString(), "\\"), true)); } string linkClass = GetItemClass(menu, item); if (!string.IsNullOrEmpty(linkClass)) { writer.WriteAttribute("class", linkClass); } WebControlAdapterExtender.WriteTargetAttribute(writer, item.Target); //if (!String.IsNullOrEmpty(item.ToolTip)) //{ // writer.WriteAttribute("title", item.ToolTip); //} //else if (!String.IsNullOrEmpty(menu.ToolTip)) //{ // writer.WriteAttribute("title", menu.ToolTip); //} writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); } else { writer.WriteBeginTag("span"); writer.WriteAttribute("class", GetItemClass(menu, item)); writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); } if (!String.IsNullOrEmpty(item.ImageUrl)) { writer.WriteBeginTag("img"); writer.WriteAttribute("src", menu.ResolveClientUrl(item.ImageUrl)); writer.WriteAttribute("alt", !String.IsNullOrEmpty(item.ToolTip) ? item.ToolTip : (!String.IsNullOrEmpty(menu.ToolTip) ? menu.ToolTip : item.Text)); writer.Write(HtmlTextWriter.SelfClosingTagEnd); writer.Write(HtmlTextWriter.SpaceChar); } // put a switch here to satisfy this request // http://www.vivasky.com/Groups/Topic.aspx?topic=2824&mid=34&pageid=5&ItemID=4&pagenumber=1#post12578 if (renderMenuText) { writer.Write(item.Text); } if (IsLink(item)) { writer.Indent--; writer.WriteEndTag("a"); } else { writer.Indent--; writer.WriteEndTag("span"); } } if ((item.ChildItems != null) && (item.ChildItems.Count > 0)) { BuildItems(item.ChildItems, false, writer); } writer.Indent--; writer.WriteLine(); writer.WriteEndTag("li"); } }