Take the community feedback survey now.
Take the community feedback survey now.
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!