private DisplayChildren ( System.Web.UI.WebControls.MenuItem item ) : bool | ||
item | System.Web.UI.WebControls.MenuItem | |
return | bool |
protected override void RenderMenuItem(HtmlTextWriter writer, MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc) { Menu owner = Owner; string clientID = oc.ClientID; bool displayChildren = owner.DisplayChildren(item); bool dynamicChildren = displayChildren && (item.Depth + 1 >= oc.StaticDisplayLevels); bool isDynamicItem = IsDynamicItem(owner, item); bool isVertical = oc.IsVertical || isDynamicItem; Unit itemSpacing = owner.GetItemSpacing(item, isDynamicItem); if (itemSpacing != Unit.Empty && (item.Depth > 0 || !isFirst)) { RenderMenuItemSpacing(writer, itemSpacing, isVertical); } if (!String.IsNullOrEmpty(item.ToolTip)) { writer.AddAttribute(HtmlTextWriterAttribute.Title, item.ToolTip); } if (isVertical) { writer.RenderBeginTag(HtmlTextWriterTag.Tr); } string parentId = isDynamicItem ? "'" + item.Parent.Path + "'" : "null"; if (dynamicChildren) { writer.AddAttribute("onmouseover", "javascript:Menu_OverItem ('" + clientID + "','" + item.Path + "'," + parentId + ")"); writer.AddAttribute("onmouseout", "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "')"); } else if (isDynamicItem) { writer.AddAttribute("onmouseover", "javascript:Menu_OverDynamicLeafItem ('" + clientID + "','" + item.Path + "'," + parentId + ")"); writer.AddAttribute("onmouseout", "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "'," + parentId + ")"); } else { writer.AddAttribute("onmouseover", "javascript:Menu_OverStaticLeafItem ('" + clientID + "','" + item.Path + "')"); writer.AddAttribute("onmouseout", "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "')"); } writer.RenderBeginTag(HtmlTextWriterTag.Td); // Top separator image if (isDynamicItem) { RenderSeparatorImage(owner, writer, oc.DynamicTopSeparatorImageUrl, false); } else { RenderSeparatorImage(owner, writer, oc.StaticTopSeparatorImageUrl, false); } // Menu item box MenuItemStyle style = new MenuItemStyle(); if (oc.Header != null) { // styles are registered if (!isDynamicItem && oc.StaticMenuItemStyle != null) { AddCssClass(style, oc.StaticMenuItemStyle.CssClass); AddCssClass(style, oc.StaticMenuItemStyle.RegisteredCssClass); } if (isDynamicItem && oc.DynamicMenuItemStyle != null) { AddCssClass(style, oc.DynamicMenuItemStyle.CssClass); AddCssClass(style, oc.DynamicMenuItemStyle.RegisteredCssClass); } if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth) { AddCssClass(style, oc.LevelMenuItemStyles [item.Depth].CssClass); AddCssClass(style, oc.LevelMenuItemStyles [item.Depth].RegisteredCssClass); } if (item == oc.SelectedItem) { if (!isDynamicItem && oc.StaticSelectedStyle != null) { AddCssClass(style, oc.StaticSelectedStyle.CssClass); AddCssClass(style, oc.StaticSelectedStyle.RegisteredCssClass); } if (isDynamicItem && oc.DynamicSelectedStyle != null) { AddCssClass(style, oc.DynamicSelectedStyle.CssClass); AddCssClass(style, oc.DynamicSelectedStyle.RegisteredCssClass); } if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth) { AddCssClass(style, oc.LevelSelectedStyles [item.Depth].CssClass); AddCssClass(style, oc.LevelSelectedStyles [item.Depth].RegisteredCssClass); } } } else { // styles are not registered if (!isDynamicItem && oc.StaticMenuItemStyle != null) { style.CopyFrom(oc.StaticMenuItemStyle); } if (isDynamicItem && oc.DynamicMenuItemStyle != null) { style.CopyFrom(oc.DynamicMenuItemStyle); } if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth) { style.CopyFrom(oc.LevelMenuItemStyles [item.Depth]); } if (item == oc.SelectedItem) { if (!isDynamicItem && oc.StaticSelectedStyle != null) { style.CopyFrom(oc.StaticSelectedStyle); } if (isDynamicItem && oc.DynamicSelectedStyle != null) { style.CopyFrom(oc.DynamicSelectedStyle); } if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth) { style.CopyFrom(oc.LevelSelectedStyles [item.Depth]); } } } style.AddAttributesToRender(writer); writer.AddAttribute("id", GetItemClientId(clientID, item, "i")); writer.AddAttribute("cellpadding", "0", false); writer.AddAttribute("cellspacing", "0", false); writer.AddAttribute("border", "0", false); writer.AddAttribute("width", "100%", false); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); // Menu item text if (isVertical) { writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%"); } if (!owner.ItemWrap) { writer.AddStyleAttribute("white-space", "nowrap"); } writer.RenderBeginTag(HtmlTextWriterTag.Td); RenderItemHref(owner, writer, item); Style linkStyle = new Style(); if (oc.Header != null) { // styles are registered AddCssClass(linkStyle, oc.ControlLinkStyle.RegisteredCssClass); if (!isDynamicItem && oc.StaticMenuItemStyle != null) { AddCssClass(linkStyle, oc.StaticMenuItemStyle.CssClass); AddCssClass(linkStyle, oc.StaticMenuItemLinkStyle.RegisteredCssClass); } if (isDynamicItem && oc.DynamicMenuItemStyle != null) { AddCssClass(linkStyle, oc.DynamicMenuItemStyle.CssClass); AddCssClass(linkStyle, oc.DynamicMenuItemLinkStyle.RegisteredCssClass); } if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth) { AddCssClass(linkStyle, oc.LevelMenuItemStyles [item.Depth].CssClass); AddCssClass(linkStyle, oc.LevelMenuItemLinkStyles [item.Depth].RegisteredCssClass); } if (item == oc.SelectedItem) { if (!isDynamicItem && oc.StaticSelectedStyle != null) { AddCssClass(linkStyle, oc.StaticSelectedStyle.CssClass); AddCssClass(linkStyle, oc.StaticSelectedLinkStyle.RegisteredCssClass); } if (isDynamicItem && oc.DynamicSelectedStyle != null) { AddCssClass(linkStyle, oc.DynamicSelectedStyle.CssClass); AddCssClass(linkStyle, oc.DynamicSelectedLinkStyle.RegisteredCssClass); } if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth) { AddCssClass(linkStyle, oc.LevelSelectedStyles [item.Depth].CssClass); AddCssClass(linkStyle, oc.LevelSelectedLinkStyles [item.Depth].RegisteredCssClass); } } } else { // styles are not registered linkStyle.CopyFrom(oc.ControlLinkStyle); if (!isDynamicItem && oc.StaticMenuItemStyle != null) { linkStyle.CopyFrom(oc.StaticMenuItemLinkStyle); } if (isDynamicItem && oc.DynamicMenuItemStyle != null) { linkStyle.CopyFrom(oc.DynamicMenuItemLinkStyle); } if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth) { linkStyle.CopyFrom(oc.LevelMenuItemLinkStyles [item.Depth]); } if (item == oc.SelectedItem) { if (!isDynamicItem && oc.StaticSelectedStyle != null) { linkStyle.CopyFrom(oc.StaticSelectedLinkStyle); } if (isDynamicItem && oc.DynamicSelectedStyle != null) { linkStyle.CopyFrom(oc.DynamicSelectedLinkStyle); } if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth) { linkStyle.CopyFrom(oc.LevelSelectedLinkStyles [item.Depth]); } } linkStyle.AlwaysRenderTextDecoration = true; } linkStyle.AddAttributesToRender(writer); writer.AddAttribute("id", GetItemClientId(clientID, item, "l")); if (item.Depth > 0 && !isDynamicItem) { double value; #if NET_4_0 Unit unit = oc.StaticSubMenuIndent; if (unit == Unit.Empty) { value = 16; } else { value = unit.Value; } #else value = oc.StaticSubMenuIndent.Value; #endif Unit indent = new Unit(value * item.Depth, oc.StaticSubMenuIndent.Type); writer.AddStyleAttribute(HtmlTextWriterStyle.MarginLeft, indent.ToString()); } writer.RenderBeginTag(HtmlTextWriterTag.A); owner.RenderItemContent(writer, item, isDynamicItem); writer.RenderEndTag(); // A writer.RenderEndTag(); // TD // Popup image if (dynamicChildren) { string popOutImage = GetPopOutImage(owner, item, isDynamicItem); if (popOutImage != null) { writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute("src", owner.ResolveClientUrl(popOutImage)); writer.AddAttribute("border", "0"); string toolTip = String.Format(isDynamicItem ? oc.DynamicPopOutImageTextFormatString : oc.StaticPopOutImageTextFormatString, item.Text); writer.AddAttribute(HtmlTextWriterAttribute.Alt, toolTip); writer.RenderBeginTag(HtmlTextWriterTag.Img); writer.RenderEndTag(); // IMG writer.RenderEndTag(); // TD } } writer.RenderEndTag(); // TR writer.RenderEndTag(); // TABLE writer.RenderEndTag(); // TD if (!isVertical && itemSpacing == Unit.Empty && (notLast || (displayChildren && !dynamicChildren))) { writer.AddStyleAttribute("width", "3px"); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.RenderEndTag(); } // Bottom separator image string separatorImg = item.SeparatorImageUrl; if (separatorImg.Length == 0) { if (isDynamicItem) { separatorImg = oc.DynamicBottomSeparatorImageUrl; } else { separatorImg = oc.StaticBottomSeparatorImageUrl; } } if (separatorImg.Length > 0) { if (!isVertical) { writer.RenderBeginTag(HtmlTextWriterTag.Td); } RenderSeparatorImage(owner, writer, separatorImg, false); if (!isVertical) { writer.RenderEndTag(); // TD } } if (isVertical) { writer.RenderEndTag(); // TR } if (itemSpacing != Unit.Empty) { RenderMenuItemSpacing(writer, itemSpacing, isVertical); } // Submenu if (displayChildren && !dynamicChildren) { if (isVertical) { writer.RenderBeginTag(HtmlTextWriterTag.Tr); } writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute("width", "100%"); owner.RenderMenu(writer, item.ChildItems, vertical, false, item.Depth + 1, notLast); if (item.Depth + 2 == oc.StaticDisplayLevels) { owner.RenderDynamicMenu(writer, item.ChildItems); } writer.RenderEndTag(); // TD if (isVertical) { writer.RenderEndTag(); // TR } } }
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 > 0) { writer.RenderEndTag(); // </li> } }