Hi,
I think it might be because you are setting the PageLink property too late on the Page_Load event, it should be on the Page_Init event.
Take a look at the example and associated paragraphs about this issue on the following page:
http://sdk.episerver.com/library/cms5/html/P_EPiServer_Web_WebControls_PageControlBase_PageLink.htm
All the best...
Hi,
Strange?
I see what you mean. But according to the "Getting Started" demo from EPi World ("Developing a submenu EPiServer:PageTree") it's said to pu the PageLink property in the OnLoad event?
Thanks!
public partial class LeftMenu : EPiServer.UserControlBase { //Variable private MenuList _menulist; //Property public MenuList Menulist { get { return _menulist; } set { _menulist = value; } } private void Page_Init(object sender, System.EventArgs e) { SubMenu.PageLink = EPiServer.Core.PageReference.StartPage; } private void Page_Load(object sender, System.EventArgs e) { base.OnLoad(e); SubMenu.DataBind(); } private void InitializeComponent(object sender, System.EventArgs e) { this.Load += new System.EventHandler(this.Page_Load); this.Init += new System.EventHandler(this.Page_Init); } }
Still not working :-)
Hi,
I have coded the following example and it seems to work - you should be able to extend it / shorten it in a way which will work for your solution. Noting that I have worked with the PageTree in the .ascx file, due to the ease with which the underlying templates can be coded. I have then attached the PageLink value in the code behind .ascx.cs file. (It seemed to work with both the Page_Load event and Page_Init event).
Hope it helps...
-- To be copied into the .ascx file (inherits value at the top needs changing to match what's in your solution) --
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LeftMenu.ascx.cs" Inherits="Templates.Units.LeftMenu" %>
<EPiServer:PageTree EvaluateHasChildren="true" ID="SubMenu" runat="server">
<HeaderTemplate>
<div id="SubMenuHeader">
<p>Left Menu</p>
<EPiServer:Property PropertyName="PageLink" ID="SubMenuPropPageLink1" runat="server" />
</div>
<div id="SubMenu">
</HeaderTemplate>
<IndentTemplate>
<ul>
</IndentTemplate>
<ItemHeaderTemplate>
<li>
</ItemHeaderTemplate>
<ItemTemplate>
<EPiServer:Property PropertyName="PageLink" ID="SubMenuPropPageLink2" runat="server" />
<asp:PlaceHolder ID="SubMenuPlaceHolderCtrl1" runat="server" Visible="<%# Container.HasChildren %>">[+]</asp:PlaceHolder>
</ItemTemplate>
<ExpandedItemTemplate>
<EPiServer:Property PropertyName="PageLink" ID="SubMenuPropPageLink3" runat="server" /> [-]
</ExpandedItemTemplate>
<SelectedItemTemplate>
<EPiServer:Property PropertyName="PageLink" ID="SubMenuPropPageLink4" runat="server" />
<asp:PlaceHolder ID="SubMenuPlaceHolderCtrl2" runat="server" Visible="<%# Container.HasChildren %>">[-]</asp:PlaceHolder>
</SelectedItemTemplate>
<TopTemplate>
<EPiServer:Property PropertyName="PageLink" ID="SubMenuPropPageLink4" runat="server" />
<asp:PlaceHolder ID="SubMenuPlaceHolderCtrl1" runat="server" Visible="<%# Container.HasChildren %>">[+]</asp:PlaceHolder>
</TopTemplate>
<SelectedTopTemplate>
<EPiServer:Property PropertyName="PageLink" ID="SubMenuPropPageLink5" runat="server" />
<asp:PlaceHolder ID="SubMenuPlaceHolderCtrl1" runat="server" Visible="<%# Container.HasChildren %>">[-]</asp:PlaceHolder>
</SelectedTopTemplate>
<ExpandedTopTemplate>
<EPiServer:Property PropertyName="PageLink" ID="SubMenuPropPageLink6" runat="server" />
</ExpandedTopTemplate>
<ItemFooterTemplate>
</li>
</ItemFooterTemplate>
<UnindentTemplate>
</ul>
</UnindentTemplate>
<FooterTemplate>
</div>
</FooterTemplate>
</EPiServer:PageTree>
-- To be copied into the .ascx.cs file (noting that the events are attached automatically through AutoEventWireup being set to true at the top of the .ascx code) --
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using EPiServer;
using EPiServer.Core;
using EPiServer.DataAbstraction;
using EPiServer.Web.WebControls;
namespace KnowlegdeWebNew.Templates.Units
{
public partial class LeftMenu : EPiServer.UserControlBase
{
private void Page_Load(object sender, System.EventArgs e)
{
SubMenu.PageLink = EPiServer.Core.PageReference.StartPage;
}
}
}
Hi,
I recieve a NullreferenceException on the following line of code:
SubMenu.PageLink = MenuList.OpenTopPage;
when trying to create an EPiServer:PageTree menu control.
My complete code for the SubMenu.ascx:
Any ideas why? I'm new to EPi so pelase bear with me ;-)
Thanks for your answers!