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) ? "navig-WithChildren" : "navig-Leaf"; string selectedStatusClass = GetSelectStatusClass(item); if (String.IsNullOrEmpty(selectedStatusClass)) { selectedStatusClass = ""; } writer.WriteAttribute("class", selectedStatusClass); 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.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"); } }
void CreateChildControlsForItems (MenuItemCollection items ) { foreach (MenuItem item in items) { bool isDynamicItem = IsDynamicItem (item); if (isDynamicItem && dynamicItemTemplate != null) { MenuItemTemplateContainer cter = new MenuItemTemplateContainer (item.Index, item); dynamicItemTemplate.InstantiateIn (cter); _menuItemControls [item] = cter; Controls.Add (cter); } else if (!isDynamicItem && staticItemTemplate != null) { MenuItemTemplateContainer cter = new MenuItemTemplateContainer (item.Index, item); staticItemTemplate.InstantiateIn (cter); _menuItemControls [item] = cter; Controls.Add (cter); } if (item.HasChildData) CreateChildControlsForItems (item.ChildItems); } }
void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem) { if (isDynamicItem && dynamicItemTemplate != null) { MenuItemTemplateContainer cter = new MenuItemTemplateContainer (item.Index, item); dynamicItemTemplate.InstantiateIn (cter); cter.Render (writer); } else if (!isDynamicItem && staticItemTemplate != null) { MenuItemTemplateContainer cter = new MenuItemTemplateContainer (item.Index, item); staticItemTemplate.InstantiateIn (cter); cter.Render (writer); } else if (isDynamicItem && DynamicItemFormatString.Length > 0) { writer.Write (string.Format (DynamicItemFormatString, item.Text)); } else if (!isDynamicItem && StaticItemFormatString.Length > 0) { writer.Write (string.Format (StaticItemFormatString, item.Text)); } else { writer.Write (item.Text); } }
private void BuildItem(MenuItem item, HtmlTextWriter writer) { Menu menu = Control as Menu; if ((menu != null) && (item != null) && (writer != null)) { writer.WriteLine(); writer.WriteBeginTag("li"); //writer.WriteAttribute("class", item.ChildItems.Count > 0 ? "AspNet-Menu-WithChildren" : "AspNet-Menu-Leaf"); 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 ((item.NavigateUrl.Length > 0) || item.Selectable) { writer.WriteBeginTag("a"); if (item.NavigateUrl.Length > 0) { //writer.WriteAttribute("href", Page.Server.HtmlEncode(menu.ResolveUrl(item.NavigateUrl))); writer.WriteAttribute("href", menu.ResolveUrl(item.NavigateUrl)); } else { writer.WriteAttribute("href", Page.ClientScript.GetPostBackClientHyperlink(menu, "b" + item.ValuePath.Replace(menu.PathSeparator.ToString(), "\\"), true)); } //writer.WriteAttribute("class", GetItemClass(menu, item)); if (item.Target.Length > 0) { writer.WriteAttribute("target", item.Target); } if (item.ToolTip.Length > 0) { writer.WriteAttribute("title", item.ToolTip); } else if (menu.ToolTip.Length > 0) { 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 (item.ImageUrl.Length > 0) { writer.WriteBeginTag("img"); writer.WriteAttribute("src", menu.ResolveClientUrl(item.ImageUrl)); writer.WriteAttribute("alt", item.ToolTip.Length > 0 ? item.ToolTip : (menu.ToolTip.Length > 0 ? menu.ToolTip : item.Text)); writer.Write(HtmlTextWriter.SelfClosingTagEnd); writer.Write(" "); } writer.Write(item.Text); if ((item.NavigateUrl.Length > 0) || item.Selectable) { 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"); if (renderCssClasses) { string theClass = GetItemLiClass(menu, item); if (renderLiSelectedCss) { string selectedStatusClass = GetLiSelectStatusClass(item); if (!String.IsNullOrEmpty(selectedStatusClass)) { if (theClass.Length > 0) { theClass += " " + selectedStatusClass; } else { theClass = selectedStatusClass; } } } if (theClass.Length > 0) { 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"); if (renderCssClasses) { 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)); } if (renderCssClasses) { string anchorCss = GetItemClass(menu, item); if (anchorCss.Length > 0) { writer.WriteAttribute("class", anchorCss); } } WebControlAdapterExtender.WriteTargetAttribute(writer, item.Target); if (!useMenuTooltipForCustomCss) { 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"); if (renderCssClasses) { writer.WriteAttribute("class", GetItemClass(menu, item)); } writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); } switch (innerSpanMode) { case "Artisteer": writer.WriteBeginTag("span"); writer.WriteAttribute("class", "l"); writer.Write(HtmlTextWriter.TagRightChar); writer.WriteEndTag("span"); writer.WriteBeginTag("span"); writer.WriteAttribute("class", "r"); writer.Write(HtmlTextWriter.TagRightChar); writer.WriteEndTag("span"); writer.WriteBeginTag("span"); writer.WriteAttribute("class", "t"); writer.Write(HtmlTextWriter.TagRightChar); break; case "SingleSpan": writer.WriteFullBeginTag("span"); break; case "ThreeSpans": writer.WriteBeginTag("span"); writer.WriteAttribute("class", "menutext"); writer.Write(HtmlTextWriter.TagRightChar); break; case "": case "None": default: // do nothing break; } if ((renderImages)&&(!string.IsNullOrEmpty(item.ImageUrl))) { writer.WriteBeginTag("img"); writer.WriteAttribute("src", menu.ResolveClientUrl(item.ImageUrl)); if (useMenuTooltipForCustomCss) { writer.WriteAttribute("alt", item.Text); } else { 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.mojoportal.com/Forums/Thread.aspx?thread=2824&mid=34&pageid=5&ItemID=4&pagenumber=1#post12578 if (renderMenuText) { writer.Write(item.Text); } switch (innerSpanMode) { case "Artisteer": writer.WriteEndTag("span"); break; case "SingleSpan": writer.WriteEndTag("span"); break; case "ThreeSpans": writer.WriteEndTag("span"); writer.WriteBeginTag("span"); writer.WriteAttribute("class", "tab-l"); writer.Write(HtmlTextWriter.TagRightChar); writer.Write(" "); writer.WriteEndTag("span"); writer.WriteBeginTag("span"); writer.WriteAttribute("class", "tab-r"); writer.Write(HtmlTextWriter.TagRightChar); writer.Write(" "); writer.WriteEndTag("span"); break; case "": case "None": default: // do nothing break; } 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"); } }
private void BuildItem(MenuItem item, HtmlTextWriter writer, string menuItemToHighlight,bool onTopLevel) { Menu menu = Control as Menu; if ((menu != null) && (item != null) && (writer != null)) { writer.WriteLine(); writer.WriteBeginTag("td"); if (onTopLevel) { string theClass = "AspNet-Menu-TopLevel-" + item.Text.ToLower().Trim(); if (item.Selected || item.Text.ToLower().Equals(menuItemToHighlight.ToLower())) { theClass += "-Selected"; } writer.WriteAttribute("class", theClass); writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); } else { string theClass = GetSelectStatusClass(item); // check for empty string. GetSelectedStatusClass returns empty when not selected. if (String.IsNullOrEmpty(theClass)) { theClass = "AspNet-Menu-Item"; } 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)); } // THIS PUTS THE CLASS NAME INTO THE HREF, NOT SURE WHY WE NEED IT SINCE IT IS IN THE DIV ABOVE //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); } string formattedText = item.Text; if (!String.IsNullOrEmpty(menu.StaticItemFormatString)) { formattedText = String.Format(menu.StaticItemFormatString, item.Text); } writer.Write(formattedText); 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("td"); } }
public Color GetItemColor(MenuItemTemplateContainer container) { MenuItem item = (MenuItem)container.DataItem; if (item.Selectable || item.ChildItems.Count>0) return Color.DarkBlue; else return Color.Red; }
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); //added to solve the <a href='<%# Eval("Text")%>'> binding problem //http://forums.asp.net/t/1069719.aspx //http://msdn2.microsoft.com/en-us/library/system.web.ui.control.bindingcontainer.aspx //The BindingContainer property is the same as the NamingContainer property, //except when the control is part of a template. In that case, the BindingContainer //property is set to the Control that defines the template. menu.Controls.Add(container); if ((item.Depth < menu.StaticDisplayLevels) && (menu.StaticItemTemplate != null)) { menu.StaticItemTemplate.InstantiateIn(container); } else { menu.DynamicItemTemplate.InstantiateIn(container); } container.DataBind(); //Databinding must occurs before rendering 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.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"); } }