Panel in MasterPage, Dynamic generate Accordion in Panel and Save state for this Colapse and expand in Session?

  1. #1

    Panel in MasterPage, Dynamic generate Accordion in Panel and Save state for this Colapse and expand in Session?

    Title:Panel in MasterPage, Dynamic generate Accordion in Panel and Save state for this Colapse and expand in Session?
    i test two weeks for this.
    (english is so poor!! sorry.)
    it's sample like below code, my QUESTION is the session has delay display the state in accross page.
    please help me to solve it! how can i write code to display the selected-state on click MenuItem , and After cross-page action , it can display layout for i click the location , but it delay to display the previous click-one-time Session Value.

    PS:
    1. localhost test is not delay, please test on other ip(other computer and browser)
    2. version: Coolite Toolkit for ASP.NET 0.8.2.983 (Coolite.Ext.Web.dll)

    the sample is ok to dynamic generate the tree-like(outlook-like Display Layout)

    Master.Page:aspx code

    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Master2.master.cs" Inherits="Coolite_Sample_001.Master2" %>
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>title</title>
    </head>
    <body>
        <form id="form1" runat="server">
    <ext:ScriptManager ID="ScriptManager1" runat="server" />    
        <div>
            <ext:Panel ID="Panel1" runat="server" Collapsible="True" Height="800" Title="Sample_DynamicItem">
                <body>
                    <ext:Panel ID="pnlTreePanel" runat="server" Height="700" Collapsible="true">
                        <body>
    
                        </body>
                        
                    </ext:Panel>
                </Body>
            </ext:Panel>      
                
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
        </form>
    </body>
    </html>
    <script language = "javascript">
    function asscesslog(num1, num2, num3, selectText, menutype)
    {
    //alert('num1:'+num1);
    //alert('num2:'+num2);
    //alert('num3:'+num3);
    //alert('selectText:'+selectText);
    //alert('menutype:'+menutype);
        Coolite.AjaxMethods.FHG.SaveLog(num1,num2, num3, selectText, menutype, {
            success: function (result){
            },
            failure: function (result){
            }
        });
    }
    </script>
    Master.Page:aspx.cs code

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using Coolite.Ext.Web;
    
    namespace Coolite_Sample_001
    {
        [AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.Alias, Alias = "FHG")]
        public partial class Master2 : System.Web.UI.MasterPage
        {
            protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
    
                this.CreateMenuTree();    // it's ok!!
            }
    
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    //this.CreateMenuTree();    // it's ok!!
                }
            }
    
            #region Data
    
            protected Boolean IsSubMenu(string iMaster)
            {
                Boolean isHaveSub = false;
                string strRel = "";
                int iSubMenuCount = 0;
                strRel = this.GetMasterSubMenuRelation();
                string[] sSubMenuList = strRel.Split(',');
    
                if (strRel == "") return isHaveSub;
                iSubMenuCount = sSubMenuList.Length / 2;
    
                string[] sSubMenuIndex = new string[iSubMenuCount];
                string[] sSubMenuFlag = new string[iSubMenuCount];
    
                
                for (int i = 0; i < iSubMenuCount; i++)
                {
                    sSubMenuIndex.SetValue(sSubMenuList[2 * i], i);
                    sSubMenuFlag.SetValue(sSubMenuList[2 * i + 1], i);
                }
    
                if (sSubMenuFlag.GetValue(Convert.ToInt32(iMaster)).ToString() == "1") isHaveSub = true;
    
                return isHaveSub;
            }
    
            protected string GetMasterSubMenuRelation()
            {
                //string strRelList = "Menu1,0,Menu2,1,Menu3,0,Menu4,0,Menu5,1,Menu6,1";   //the same below.
                string strRelList = "0,0,1,1,2,0,3,0,4,1,5,1";
                return strRelList;
            }
    
            /// <summary>
            /// MasterMenu
            /// </summary>
            /// <returns></returns>
            protected string GetMenuData()
            {
                string strList = "Menu1,0,Menu2,1,Menu3,2,Menu4,3,Menu5,4,Menu6,5";
                return strList;
            }
    
            /// <summary>
            /// SubMenu
            /// </summary>
            /// <param name="iMIndex">Main Menu Index</param>
            /// <returns></returns>
            protected string GetSubMenuData(string iMIndex)
            {
                string strSubList = "";
                switch (iMIndex)
                {
                    case "0":
                        strSubList = "";
                        break;
                    case "1":
                        strSubList = "Menu2_1,0,Menu2_2,1,Menu2_3,2";
                        break;
                    case "2":
                        strSubList = "";
                        break;
                    case "3":
                        strSubList = "";
                        break;
                    case "4":
                        strSubList = "Menu5_1,0,Menu5_2,1";
                        break;
                    case "5":
                        strSubList = "Menu6_1,0,Menu6_2,1,Menu6_3,2,Menu6_4,3,Menu6_5,4";
                        break;
    
                }
                return strSubList;
            }
    
            /// <summary>
            /// every MenuPanel's MenuItem
            /// </summary>
            /// <param name="iMIndex">Main Menu Index</param>
            /// <param name="iSIndex">Sub Menu Index</param>
            /// <returns></returns>
            protected string GetMenuItem(string iMIndex, string iSIndex)
            {
                string strMenuItemList = "";
                switch (iMIndex)
                {
                    case "0":
                        switch (iSIndex)
                        {
                            case "0":
                                strMenuItemList = "MenuItem1_1,0,MenuInMasterPage01.aspx,MenuItem1_2,1,MenuInMasterPage02.aspx";
                                break;
                        }
                        break;
                    case "1":
                        switch (iSIndex)
                        {
                            case "0":
                                strMenuItemList = "MenuItem2_1_1,0,MenuInMasterPage03.aspx,MenuItem2_1_2,1,MenuInMasterPage04.aspx";
                                break;
                            case "1":
                                strMenuItemList = "MenuItem2_2_1,0,MenuInMasterPage05.aspx";
                                break;
                            case "2":
                                strMenuItemList = "MenuItem2_3_1,0,MenuInMasterPage06.aspx,MenuItem2_3_2,1,MenuInMasterPage07.aspx,MenuItem2_3_3,2,MenuInMasterPage01.aspx";
                                break;
                        }
                        break;
                    case "2":
                        switch (iSIndex)
                        {
                            case "0":
                                strMenuItemList = "MenuItem3_1,0,MenuInMasterPage02.aspx,MenuItem3_2,1,MenuInMasterPage03.aspx,MenuItem3_3,2,MenuInMasterPage04.aspx,MenuItem3_4,3,MenuInMasterPage05.aspx";
                                break;
                        }
                        break;
                    case "3":
                        switch (iSIndex)
                        {
                            case "0":
                                strMenuItemList = "MenuItem4_1,0,MenuInMasterPage06.aspx";
                                break;
                        }
                        break;
                    case "4":
                        switch (iSIndex)
                        {
                            case "0":
                                strMenuItemList = "MenuItem5_1_1,0,MenuInMasterPage07.aspx,MenuItem5_1_2,1,MenuInMasterPage01.aspx,MenuItem5_1_3,2,MenuInMasterPage02.aspx";
                                break;
                            case "1":
                                strMenuItemList = "MenuItem5_2_1,0,MenuInMasterPage03.aspx,MenuItem5_2_2,1,MenuInMasterPage04.aspx,MenuItem5_2_3,2,MenuInMasterPage05.aspx,MenuItem5_2_4,3,MenuInMasterPage06.aspx,MenuItem5_2_5,4,MenuInMasterPage07.aspx";
                                break;
                        }
                        break;
                    case "5":
                        switch (iSIndex)
                        {
                            case "0":
                                strMenuItemList = "MenuItem6_1_1,0,MenuInMasterPage01.aspx,MenuItem6_1_2,1,MenuInMasterPage02.aspx,MenuItem6_1_3,2,MenuInMasterPage03.aspx,MenuItem6_1_4,3,MenuInMasterPage04.aspx,MenuItem6_1_5,4,MenuInMasterPage05.aspx,MenuItem6_1_6,5,MenuInMasterPage06.aspx,MenuItem6_1_7,6,MenuInMasterPage07.aspx";
                                break;
                            case "1":
                                strMenuItemList = "MenuItem6_2_1,0,MenuInMasterPage01.aspx,MenuItem6_2_2,1,MenuInMasterPage02.aspx";
                                break;
                            case "2":
                                strMenuItemList = "MenuItem6_3_1,0,MenuInMasterPage03.aspx";
                                break;
                            case "3":
                                strMenuItemList = "MenuItem6_4_1,0,MenuInMasterPage04.aspx,MenuItem6_4_2,1,MenuInMasterPage05.aspx,MenuItem6_4_3,2,MenuInMasterPage06.aspx";
                                break;
                            case "4":
                                strMenuItemList = "MenuItem6_5_1,0,MenuInMasterPage07.aspx,MenuItem6_5_2,1,MenuInMasterPage01.aspx";
                                break;
                        }
                        break;
    
                }
                return strMenuItemList;
            }
    
            #endregion --Data
    
            protected void CreateMenuTree()
            {
                #region [Dynamic Generate Menu]
    
                #region "prepare Master Menu setting"
    
                string strMenu = "";
                int iMenuCount = 0;
                strMenu = this.GetMenuData();
                string [] sMenuList = strMenu.Split(',');
    
                if (strMenu == "") return;
                iMenuCount = sMenuList.Length / 2;
                string[] sMenuNme = new string[iMenuCount];
                string[] sMenuIndex = new string[iMenuCount];
    
                //Master Menu Setting
                for (int i = 0; i < iMenuCount; i++)
                {
                    sMenuNme.SetValue(sMenuList[2 * i], i);
                    sMenuIndex.SetValue(sMenuList[2 * i + 1], i);
                }
    
                #endregion --"prepare Master Menu setting"
    
                #region "declare Dynamic Generate Control"
    
                Coolite.Ext.Web.Panel pl2 = new Coolite.Ext.Web.Panel(); // have SubMenu, every MasterMenu to new a object.MasterMenu must be Panel.
    
    
                Coolite.Ext.Web.Menu mn = new Coolite.Ext.Web.Menu();
                MenuPanel mpl = new MenuPanel();
                Coolite.Ext.Web.MenuItem mi = new Coolite.Ext.Web.MenuItem();
    
    
                Coolite.Ext.Web.Accordion Accordion1 = new Coolite.Ext.Web.Accordion(); // Top level is Accordion
                Coolite.Ext.Web.Accordion Accordion2 = null;
    
                #endregion --"declare Dynamic Generate Control"
    
                for (int i = 0; i < iMenuCount; i++)
                { 
                    if (!IsSubMenu(sMenuIndex[i]))
                    {//no SubMenu
    
                        #region "no SubMenu"
    
                        string strMenuItem = "";
                        int iMenuItemCount = 0;
                        strMenuItem = GetMenuItem(i.ToString(), "0");
                        string [] sMenuItemList = strMenuItem.Split(',');
    
                        if (strMenuItem == "") break;
    
                        iMenuItemCount = sMenuItemList.Length / 3;
                        string[] sMenuItemNme = new string[iMenuItemCount];
                        string[] sMenuItemIndex = new string[iMenuItemCount];
                        string[] sMenuItemHref = new string[iMenuItemCount];
    
                        //pl2 = new Coolite.Ext.Web.Panel();
                        mpl = new Coolite.Ext.Web.MenuPanel();
                        mpl.Title = sMenuNme.GetValue(i).ToString();
                        mpl.Collapsible = true;
                        mpl.AutoHeight = true;
                        mpl.Collapsed = true;       // Collapse MenuPanel
    
                        //if (i == 4)
                        for (int j = 0; j < iMenuItemCount; j++)
                        {
                            sMenuItemNme.SetValue(sMenuItemList[3 * j], j);
                            sMenuItemIndex.SetValue(sMenuItemList[3 * j + 1], j);
                            sMenuItemHref.SetValue(sMenuItemList[3 * j + 2], j);
                        }// End - for - j
    
                        string sSelectText = "";
                        for (int j = 0; j < iMenuItemCount; j++)
                        {
                            mi = new Coolite.Ext.Web.MenuItem();
                            mi.Text = sMenuItemNme.GetValue(j).ToString();
    
                            mi.Href = sMenuItemHref.GetValue(j).ToString();
                            //mi.HrefTarget = "_blank";
    
                            mi.Icon = Icon.BellSilver;
                            sSelectText = mpl.Title + "," + mi.Text;
                            mi.Listeners.Click.Handler = "asscesslog('" + i.ToString() + "','" + j.ToString() + "','0','" + sSelectText + "', '')";
                            mpl.Menu.Items.Add(mi);
                        }// End - for - j
    
                        Accordion1.Items.Add(mpl);
    
                        #endregion --"no SubMenu"
    
                    }
                    else
                    {//have SubMenu
    
                        #region "have SubMenu"
    
                        string strSubMenu = "";
                        int iSubMenuCount = 0;
                        strSubMenu = GetSubMenuData(i.ToString());
                        string[] sSubMenuList = strSubMenu.Split(',');
    
                        if (strSubMenu == "") break;
    
                        iSubMenuCount = sSubMenuList.Length / 2;
                        string[] sSubMenuNme = new string[iSubMenuCount];
                        string[] sSubMenuIndex = new string[iSubMenuCount];
    
                        pl2 = new Coolite.Ext.Web.Panel();
                        pl2.Title = sMenuNme.GetValue(i).ToString();
                        pl2.Collapsible = true;
                        pl2.AutoHeight = true;
                        pl2.Collapsed = true;               // [Collapse]Panel
    
                        Accordion2 = new Coolite.Ext.Web.Accordion();
                        for (int j = 0; j < iSubMenuCount; j++)
                        {
                            sSubMenuNme.SetValue(sSubMenuList[2 * j], j);
                            sSubMenuIndex.SetValue(sSubMenuList[2 * j + 1], j);
    
                            string strMenuItem = "";
                            int iMenuItemCount = 0;
                            strMenuItem = GetMenuItem(i.ToString(), j.ToString());
                            string[] sMenuItemList = strMenuItem.Split(',');
    
                            if (strMenuItem == "") break;
    
                            iMenuItemCount = sMenuItemList.Length / 3;
                            string[] sMenuItemNme = new string[iMenuItemCount];
                            string[] sMenuItemIndex = new string[iMenuItemCount];
                            string[] sMenuItemHref = new string[iMenuItemCount];
    
    
                            mpl = new Coolite.Ext.Web.MenuPanel();
                            mpl.Title = sSubMenuNme.GetValue(j).ToString();
                            mpl.Collapsible = true;
                            mpl.AutoHeight = true;
                            mpl.Collapsed = true;           // [Collapse]MenuPanel
    
    
                            for (int k = 0; k < iMenuItemCount; k++)
                            {
                                sMenuItemNme.SetValue(sMenuItemList[3 * k], k);
                                sMenuItemIndex.SetValue(sMenuItemList[3 * k + 1], k);
                                sMenuItemHref.SetValue(sMenuItemList[3 * k + 2], k);
                            }// End - for - k
    
                            string sSelectText = "";
                            for (int k = 0; k < iMenuItemCount; k++)
                            {
                                mi = new Coolite.Ext.Web.MenuItem();
                                mi.Text = sMenuItemNme.GetValue(k).ToString();
    
                                mi.Href = sMenuItemHref.GetValue(k).ToString();
                                //mi.HrefTarget = "_blank";
    
                                mi.Icon = Icon.BellSilver;
                                sSelectText = pl2.Title + "," + mpl.Title + "," + mi.Text;
                                mi.Listeners.Click.Handler = "asscesslog('" + i.ToString() + "','" + j.ToString() + "','" + k.ToString() + "','" + sSelectText + "', 'SubMenu')";
                                mpl.Menu.Items.Add(mi);
                            }// End - for - k
                            Accordion2.Items.Add(mpl);
    
                        }// End - for - j
                        pl2.Items.Add(Accordion2);
                        Accordion1.Items.Add(pl2);
    
                        #endregion --"have SubMenu"
    
                    }// if (!IsSubMenu(sMenuIndex[i]))
    
                }// End - for - i
                pnlTreePanel.Items.Add(Accordion1);
    
                #endregion --[Dynamic Generate Menu]
    
                #region [State Display]
                // #######################################################################
                // ######## Direct use index number to set open and selected Item ########
                // #######################################################################
    
                string[] stateList = null;
                if (HttpContext.Current.Session["SelectNode"] != null)
                    if (HttpContext.Current.Session["SelectNode"].ToString() != "")
                        stateList = HttpContext.Current.Session["SelectNode"].ToString().Split(',');
                if (stateList == null) return;
    
                int num1 = -1, num2 = -1, num3 = -1;
                string plTitle = "", mplTitle = "", itemText = "", menutype = "";
                if (stateList.Length > 1)
                { 
                    num1 = Convert.ToInt32(stateList[0]);
                    num2 = Convert.ToInt32(stateList[1]);
                    num3 = Convert.ToInt32(stateList[2]);
                    plTitle = stateList[3];
                    mplTitle = stateList[4];
                    itemText = stateList[5];
                    menutype = stateList[6];
                }
    
                if (menutype != "SubMenu")
                {
                        #region "no SubMenu"
                    mpl = new Coolite.Ext.Web.MenuPanel();
                    mpl = (Coolite.Ext.Web.MenuPanel)Accordion1.Items[num1];
                    mpl.Collapsed = false;
                    mpl.SelectedIndex = num2;
    
                        #endregion --"no SubMenu"
                }
                else
                { 
                        #region "have SubMenu"
                    Coolite.Ext.Web.Panel pl = new Coolite.Ext.Web.Panel();
                    pl = (Coolite.Ext.Web.Panel)Accordion1.Items[num1];
                    pl.Collapsed = false;
    
                    mpl = new Coolite.Ext.Web.MenuPanel();
                    mpl = (Coolite.Ext.Web.MenuPanel)((Coolite.Ext.Web.Panel)Accordion1.Items[num1]).Items[num2];
                    mpl.Collapsed = false;
                    mpl.SelectedIndex = num3;
    
                        #endregion --"have SubMenu"
                }
    
                #endregion --[State Display]
    
            }
    
            protected void DisplaySelectStatus()
            { 
            
            
            }
    
            #region DB_Access
            [AjaxMethod]
            public string SaveLog(int num1, int num2, int num3, string SelectText, string menutype)
            {
                string result = "";
                string plTitle = "", mplTitle = "", itemText = "";
                string [] sSelectText = null;
    
                if (SelectText.Trim() != "")
                    sSelectText = SelectText.Trim().Split(',');
                if (sSelectText.Length > 2)
                {
                    plTitle = sSelectText[0];
                    mplTitle = sSelectText[1];
                    itemText = sSelectText[2];
                }
                else
                {
                    mplTitle = sSelectText[0];
                    itemText = sSelectText[1];
                }
                result = num1.ToString() + "," + num2.ToString() + "," + num3.ToString() + "," + plTitle + "," + mplTitle + "," + itemText + "," + menutype;
                HttpContext.Current.Session["SelectNode"] = result;
                return result;
            }
            #endregion --DB_Access
        }
    }
    like below page , have 6~8 page:

    MenuInMasterPage01.aspx:

    <%@ Page Language="C#"  MasterPageFile="Master2.master" AutoEventWireup="false" CodeFile="MenuInMasterPage01.aspx.cs" Inherits="MenuInMasterPage01" %>
    <%@ Register TagPrefix = "ext" Namespace = "Coolite.Ext.Web" Assembly = "Coolite.Ext.Web" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
        <asp:Label runat = server ID = Label1 Text = "Page01" />
    </asp:Content>
  2. #2

    solved it!!

    geoffrey.mcgill : please help me to solve it !!thanks!

    ths!!

    I solved it!!
    can help close it!!
    Last edited by netcooliteuser; Aug 27, 2010 at 3:14 PM. Reason: the question is solved.
  3. #3

    Maintain State in Master page for Accordion Panel

    Hi,

    I have similar kind of problem and expecting help.
    Here is my code:

    1) SiteMasterPage.master
    <%@ Master Language="VB" CodeFile="SiteMasterPage.master.vb" Inherits="SiteMasterPage" %>
    <%@ Import Namespace="Ext.Net" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    	<style type="text/css">
    		.NavLink { text-decoration:none; font-weight:bold; color:Green; font-size:0.9em; }	
    	</style>
        <asp:ContentPlaceHolder id="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
    	<ext:ResourceManager ID="RsrcManager" runat="server"></ext:ResourceManager>
        <div>
    		
    		<ext:Viewport ID="Viewport1" runat="server" AutoHeight="false" Layout="Border">
    		<Items> 
                <ext:Panel ID="Panel1" runat="server" Width="180" Border="true"  Region="West" Layout="VBox">
                   <LayoutConfig >
                        <ext:VBoxLayoutConfig DefaultMargins="1" Pack="Start" Padding="5" Align="Stretch" />
    			    </LayoutConfig>
                    <Items>
                        <ext:Panel ID="pnlNavigation" CollapseFirst="true" Stateful="true" runat="server" Flex="1" AutoHeight="true"  Layout="Accordion" Margins="0 0 15 0">
                            <LayoutConfig>
                                <ext:AccordionLayoutConfig  CollapseFirst="true" OriginalHeader="true" />
                            </LayoutConfig>
                            <Items>
                                <ext:MenuPanel ID="MenuPanel1"  runat="server" AutoHeight="true" Title="Group 1"  Icon="Group">
    								<Menu ID="Menu1" ShowSeparator="false" runat="server">
    									<Items>
    										<ext:MenuItem runat="server" Cls="NavLink" id="MenuItem3" Icon="ThumbUp"  CommandName="FirstContentPage.aspx" Text="First Content">
    											<DirectEvents>
    												<Click OnEvent="LoadContentPage" Url="FirstContentPage.aspx"></Click>
    											</DirectEvents>
    										</ext:MenuItem>
    										<ext:MenuItem runat="server" Cls="NavLink" id="MenuItem4" Icon="ThumbDown"  CommandName="SecondContentPage.aspx" Text="Second Content">
    											<DirectEvents>
    												<Click OnEvent="LoadContentPage" Url="SecondContentPage.aspx"></Click>
    											</DirectEvents>
    										</ext:MenuItem>
    									</Items>
    								</Menu>
    							</ext:MenuPanel>
                                <ext:MenuPanel ID="MenuPanel2"  runat="server" AutoHeight="true" Title="Group 2"  Icon="Group">
    								<Menu ID="Menu2" ShowSeparator="false" runat="server">
    									<Items>
    										<ext:MenuItem runat="server" Cls="NavLink" id="MenuItem1" Icon="ThumbUp"  CommandName="ThirdContentPage.aspx" Text="Third Content">
    											<DirectEvents>
    												<Click OnEvent="LoadContentPage"  Url="ThirdContentPage.aspx"></Click>
    											</DirectEvents>
    										</ext:MenuItem>
    										<ext:MenuItem runat="server" Cls="NavLink" id="MenuItem2" Icon="ThumbDown"  CommandName="FourthContentPage.aspx" Text="Fourth Content">
    											<DirectEvents>
    												<Click OnEvent="LoadContentPage" Url="FourthContentPage.aspx"></Click>
    											</DirectEvents>
    										</ext:MenuItem>
    									</Items>
    								</Menu>
    							</ext:MenuPanel>
                            </Items>
    					</ext:Panel>
                     </Items>
                </ext:Panel>
    			<ext:Panel ID="pnlPagePanel" Margins="0" Region="Center" Padding="5" runat="server" Header="false">
    				<Content>
    						<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
    						</asp:ContentPlaceHolder>				
    				</Content>
    			</ext:Panel>
        	</Items>
        </ext:Viewport>
    
    
    	</div>
        </form>
    </body>
    </html>
    2) SiteMasterPage.Master.vb
    Imports Ext.Net
    
    Partial Class SiteMasterPage
    	Inherits System.Web.UI.MasterPage
    
    	Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    		
    	End Sub
    
    	
    	Public Sub LoadContentPage(ByVal sender As Object, ByVal e As DirectEventArgs)
    
    		Dim olnk As Ext.Net.MenuItem = sender
    		Dim url As String = olnk.DirectEvents.Click.Url
    
    		Response.Redirect(url)
    
    	End Sub
    
    End Class
    I have navigation Panel with MenuPanels in it in my master page. I want to be able to save state of Navigation panel upon user clicks to navigate across the site pages. The navigation panel is being reset to first MenuPanel expanded and rest are collapsed on every user click to any MenuPanel items. MenuPanel with .aspx page reference should be expanded in Navigation panel and rest should be collapsed. I would also like to know If there is way to maintain state using javascript as well.

    Any help will be deeply appreciated.

    Thanks

Similar Threads

  1. [CLOSED] generate dynamically LayoutConfig to a Panel
    By rnfigueira in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Jul 26, 2011, 4:14 PM
  2. Replies: 0
    Last Post: Jan 13, 2011, 7:50 AM
  3. Expand all panel items in accordion layout
    By DavidS in forum 1.x Help
    Replies: 4
    Last Post: Nov 25, 2010, 6:24 AM
  4. Replies: 0
    Last Post: Aug 26, 2010, 2:58 PM
  5. Cookieless session state
    By signup in forum 1.x Help
    Replies: 3
    Last Post: Aug 26, 2009, 8:05 AM

Tags for this Thread

Posting Permissions