private void DoSelecetion(Menu menu) { if (suppressPageSelection) { return; } bool didSelect = false; String valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); if (valuePath.Length > 0) { MenuItem menuItem; menuItem = menu.FindItem(valuePath); if ( (topLevelOnly) && (menuItem == null) && (valuePath.IndexOf(menu.PathSeparator) > -1) ) { valuePath = valuePath.Substring(0, (valuePath.IndexOf(menu.PathSeparator))); menuItem = menu.FindItem(valuePath); } if (menuItem != null) { try { menuItem.Selected = true; didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset); if (valuePath.Length > 0) { MenuItem menuItem; menuItem = menu.FindItem(valuePath); if ( (topLevelOnly) && (menuItem == null) && (valuePath.IndexOf(menu.PathSeparator) > -1) ) { valuePath = valuePath.Substring(0, (valuePath.IndexOf(menu.PathSeparator))); menuItem = menu.FindItem(valuePath); } if (menuItem != null) { try { menuItem.Selected = true; didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } }
private void RenderTreeView() { #if NET35 if (WebConfigSettings.DisablePageViewStateByDefault) { Page.EnableViewState = true; } #endif if (currentPage == null) { currentPage = CacheHelper.GetCurrentPage(); } mojoTreeView treeMenu1; if (useArtisteer) { treeMenu1 = new ArtisteerTreeView(); } else { treeMenu1 = new mojoTreeView(); } treeMenu1.EnableTheming = true; treeMenu1.SkinID = menuSkinID; treeMenu1.ShowExpandCollapse = treeViewShowExpandCollapse; treeMenu1.UseMenuTooltipForCustomCss = useMenuTooltipForCustomCss; if (treeViewShowExpandCollapse) { treeMenu1.ShowExpandCollapse = true; treeMenu1.EnableViewState = true; treeMenu1.TreeNodeExpanded += new TreeNodeEventHandler(treeMenu1_TreeNodeExpanded); //this.EnableViewState = false; } else { treeMenu1.ShowExpandCollapse = false; treeMenu1.EnableViewState = false; this.EnableViewState = false; } treeMenu1.PopulateNodesFromClient = treeViewPopulateOnDemand; treeMenu1.ExpandDepth = treeViewExpandDepth; treeMenu1.TreeNodeDataBound += new TreeNodeEventHandler(treeMenu1_TreeNodeDataBound); treeMenu1.CollapseImageToolTip = Resource.TreeMenuCollapseTooltip; treeMenu1.ExpandImageToolTip = Resource.TreeMenuExpandTooltip; this.menuPlaceHolder.Controls.Add(treeMenu1); if (isSubMenu) { if ( (currentPage != null) && (currentPage.ParentId == -1) ) { if ( (currentPage.UseUrl) && (currentPage.Url.Length > 0) && (WebConfigSettings.UseUrlReWriting) ) { pageMapDataSource.StartingNodeUrl = currentPage.Url; } else { pageMapDataSource.StartingNodeUrl = "~/Default.aspx?pageid=" + currentPage.PageId.ToInvariantString(); } } else { pageMapDataSource.StartingNodeUrl = SiteUtils.GetStartUrlForPageMenu(pageMapDataSource.Provider.RootNode, startingNodeOffset); } } if (startingNodeUrl.Length > 0) { pageMapDataSource.StartingNodeUrl = startingNodeUrl; } if (Page.IsPostBack) { // return if menu already bound if (treeMenu1.Nodes.Count > 0) { return; } } if (startingNodeOffset > (currentPageDepth + 1)) { this.Visible = false; return; } treeMenu1.PathSeparator = '|'; treeMenu1.DataSourceID = pageMapDataSource.ID; try { treeMenu1.DataBind(); } catch (ArgumentException ex) { log.Error(ex); } if (treeMenu1.SelectedNode != null) { mojoTreeView.ExpandToValuePath(treeMenu1, treeMenu1.SelectedNode.ValuePath); } else { //bool didSelect = false; String valuePath = string.Empty; if (isSubMenu) { valuePath = SiteUtils.GetPageMenuActivePageValuePath(pageMapDataSource.Provider.RootNode); if (startingNodeOffset > 0) { for (int i = 1; i <= startingNodeOffset; i++) { if (valuePath.IndexOf("|") > -1) { valuePath = valuePath.Remove(0, valuePath.IndexOf("|") + 1); } } } } else { valuePath = SiteUtils.GetActivePageValuePath(pageMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); } mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); TreeNode nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect == null) { nodeToSelect = treeMenu1.FindNode(currentPage.PageName); } if (nodeToSelect != null) { try { nodeToSelect.Selected = true; //didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } if (treeMenu1.Nodes.Count == 0) { this.Visible = false; } }
private void RenderTreeView() { #if NET35 if (WebConfigSettings.DisablePageViewStateByDefault) { Page.EnableViewState = true; } #endif //menu1.Visible = false; mojoTreeView treeMenu1; if (useArtisteer) { treeMenu1 = new ArtisteerTreeView(); treeMenu1.EnableViewState = false; treeMenu1.ShowExpandCollapse = false; } else { treeMenu1 = new mojoTreeView(); treeMenu1.UseDataRole = useDataRole; treeMenu1.SuppressImages = suppressImages; if (treeViewShowExpandCollapse) { treeMenu1.EnableViewState = true; treeMenu1.ShowExpandCollapse = true; treeMenu1.TreeNodeExpanded += new TreeNodeEventHandler(treeMenu1_TreeNodeExpanded); } else { treeMenu1.ShowExpandCollapse = false; #if !NET35 //http://www.4guysfromrolla.com/articles/071410-1.aspx //optimize viewstate for .NET 4 this.ViewStateMode = ViewStateMode.Disabled; treeMenu1.ViewStateMode = ViewStateMode.Disabled; #endif } } treeMenu1.EnableTheming = true; treeMenu1.SkinID = menuSkinID; treeMenu1.UseMenuTooltipForCustomCss = useMenuTooltipForCustomCss; this.menuPlaceHolder.Controls.Add(treeMenu1); #if !MONO treeMenu1.PopulateNodesFromClient = treeViewPopulateOnDemand; #endif treeMenu1.CollapseImageToolTip = Resource.TreeMenuCollapseTooltip; treeMenu1.ExpandImageToolTip = Resource.TreeMenuExpandTooltip; treeMenu1.ExpandDepth = 0; //treeMenu1.TreeNodePopulate += new TreeNodeEventHandler(treeMenu1_TreeNodePopulate); treeMenu1.TreeNodeDataBound += new TreeNodeEventHandler(treeMenu1_TreeNodeDataBound); //older skins have this StyleSheet stylesheet = (StyleSheet)Page.Master.FindControl("StyleSheet"); if (stylesheet != null) { if (stylesheet.FindControl("treeviewcss") == null) { Literal cssLink = new Literal(); cssLink.ID = "treeviewcss"; cssLink.Text = "\n<link href='" + SiteUtils.GetSkinBaseUrl(Page) + "styletreeview.css' type='text/css' rel='stylesheet' media='screen' />"; stylesheet.Controls.Add(cssLink); log.Debug("added stylesheet for treeiew"); } } treeMenu1.ExpandDepth = treeViewExpandDepth; //log.Debug("set ExpandDepth to " + treeViewExpandDepth.ToString(CultureInfo.InvariantCulture)); if (Page.IsPostBack) { // return if menu already bound if (treeMenu1.Nodes.Count > 0) { return; } } treeMenu1.PathSeparator = '|'; treeMenu1.DataSourceID = this.siteMapDataSource.ID; try { treeMenu1.DataBind(); } catch (ArgumentException ex) { log.Error(ex); } if ( (treeMenu1.SelectedNode != null) && (!suppressPageSelection) ) { mojoTreeView.ExpandToValuePath(treeMenu1, treeMenu1.SelectedNode.ValuePath); log.Debug("called mojoTreeview.ExpandToValuePath for selectednode value path: " + treeMenu1.SelectedNode.ValuePath); } else { bool didSelect = false; if (!suppressPageSelection) { String valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); log.Debug("called mojoTreeview.ExpandToValuePath for value path: " + valuePath); TreeNode nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); log.Debug("called mojoTreeview.ExpandToValuePath for value path: " + valuePath); if (valuePath.Length > 0) { nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } if (!didSelect) { if ((currentPage != null) && (currentPage.Url.Length > 0)) { string u = currentPage.Url.Replace("~/", "/"); valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset, u); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset); if (valuePath.IndexOf(treeMenu1.PathSeparator) > -1) { valuePath = valuePath.Substring(0, (valuePath.IndexOf(treeMenu1.PathSeparator))); nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } } } }
private void DoMenuSelection(Menu menu) { // TODO: clean up this hairy mess without breaking anything MenuItem menuItem = null; bool didSelect = false; string valuePath; if (isSubMenu) { valuePath = SiteUtils.GetPageMenuActivePageValuePath(pageMapDataSource.Provider.RootNode); } else { valuePath = SiteUtils.GetActivePageValuePath(pageMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); } if (valuePath.Length > 0) { menuItem = menu.FindItem(valuePath); if (menuItem == null) { if (startingNodeOffset > 0) { for (int i = 1; i <= startingNodeOffset; i++) { if (valuePath.IndexOf("|") > -1) { valuePath = valuePath.Remove(0, valuePath.IndexOf("|") + 1); } } } } if (menuItem == null) { valuePath = SiteUtils.GetPageMenuActivePageValuePath(pageMapDataSource.Provider.RootNode); menuItem = menu.FindItem(valuePath); } if (menuItem != null) { try { menuItem.Selected = true; didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(pageMapDataSource.Provider.RootNode, startingNodeOffset); if (valuePath.Length > 0) { menuItem = menu.FindItem(valuePath); if ( (menuItem == null) && (valuePath.IndexOf(menu.PathSeparator) > -1) ) { valuePath = valuePath.Substring(0, (valuePath.IndexOf(menu.PathSeparator))); menuItem = menu.FindItem(valuePath); } if ( (dynamicDisplayLevels == 0) && (menuItem == null) && (valuePath.IndexOf(menu.PathSeparator) > -1) ) { foreach (MenuItem m in menu.Items) { if (valuePath.Contains(m.ValuePath)) { try { m.Selected = true; didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } return; } } } if (menuItem != null) { try { menuItem.Selected = true; didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(pageMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); if (valuePath.Length > 0) { menuItem = menu.FindItem(valuePath); if (menuItem == null) { if (currentPage == null) { currentPage = CacheHelper.GetCurrentPage(); } if (currentPage != null) { menuItem = menu.FindItem(currentPage.PageGuid.ToString()); } } if ( (dynamicDisplayLevels == 0) && (menuItem == null) && (valuePath.IndexOf(menu.PathSeparator) > -1) ) { foreach (MenuItem m in menu.Items) { if (valuePath.Contains(m.ValuePath)) { try { m.Selected = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } return; } } } if (menuItem != null) { try { menuItem.Selected = true; didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } }
private void DoSelecetion(Menu menu) { if (suppressPageSelection) { return; } bool didSelect = false; String valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); if (valuePath.Length > 0) { MenuItem menuItem; menuItem = menu.FindItem(valuePath); if ( (topLevelOnly || menu.MaximumDynamicDisplayLevels == 0) && (menuItem == null) && (valuePath.IndexOf(menu.PathSeparator) > -1) ) { valuePath = valuePath.Substring(0, (valuePath.IndexOf(menu.PathSeparator))); menuItem = menu.FindItem(valuePath); } if (menuItem != null) { try { menuItem.Selected = true; didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset); if (valuePath.Length > 0) { MenuItem menuItem; menuItem = menu.FindItem(valuePath); if ( (topLevelOnly) && (menuItem == null) && (valuePath.IndexOf(menu.PathSeparator) > -1) ) { valuePath = valuePath.Substring(0, (valuePath.IndexOf(menu.PathSeparator))); menuItem = menu.FindItem(valuePath); // http://www.mojoportal.com/Forums/Thread.aspx?thread=7277&mid=34&pageid=5&ItemID=5&pagenumber=1#post33725 // patch by vijaykarla 2011-05-24 // If the page is not Included In Menu, the above line of code wont work (returns null), following code is solution for it //========= if (menuItem == null) { #if NET35 if (!string.IsNullOrEmpty(valuePath)) #else if (!string.IsNullOrWhiteSpace(valuePath)) #endif { int lastSeperatorIndex = valuePath.LastIndexOf(menu.PathSeparator); while (lastSeperatorIndex > 0) { valuePath = valuePath.Substring(0, lastSeperatorIndex); menuItem = menu.FindItem(valuePath); if (menuItem != null) { break; } lastSeperatorIndex = valuePath.LastIndexOf(menu.PathSeparator); } } } //======= } if (menuItem != null) { try { menuItem.Selected = true; didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } }