ASP.NET page content doesn't change

Posted by WtFudgE on Stack Overflow See other posts from Stack Overflow or by WtFudgE
Published on 2010-04-02T09:36:42Z Indexed on 2010/04/02 9:43 UTC
Read the original article Hit count: 521

Filed under:
|
|

Hi,

I created an application which has a menu where it's items are created dynamicly. The menu acts as a language menu.

<body runat="server">
    <form id="Form1" runat="server">
    <table class="TableLayout">
        <tr>
            <td class="TopNav" align="right">
                <asp:Menu runat="server" ID="LanguageMenu" Orientation="Horizontal" OnMenuItemClick="LanguageMenu_MenuItemClick">
                    <LevelMenuItemStyles>
                        <asp:MenuItemStyle CssClass="TopNavItem" />
                    </LevelMenuItemStyles>
                    <StaticHoverStyle CssClass="TopNavItemHover" />
                </asp:Menu>
            </td>
        </tr>
    ...

I use session variables to set my current language.

however if I click on the menu to change the session variable:

public void LanguageMenu_MenuItemClick(Object sender, MenuEventArgs e)
        {
            Session["language"] = e.Item.Text;
        }

The page reloads with the following code:

sportsPath = String.Format(@"{0}{1}\Sports\", xmlPath, Session["language"]);
//create LeftNavigation
            string[] sports = Directory.GetFiles(sportsPath);
            LeftNavigation.Items.Clear();
            foreach (string sport in sports)
            {
                string text = sport.Replace(sportsPath, "").Replace(".xml", "");
                MenuItem item = new MenuItem();
                item.Text = text;
                LeftNavigation.Items.Add(item);
            }

The thing is the content doesn't change, only after I click on something else.

If I skip through my code after clicking on the menuItem I can see that it passes the code and it should change, however for some reason the page needs another extra trigger to modify it's content.

I also see the page reloading so I don't understand why it's not changing immediatly. I guess I'm not understanding the asp.net logic just quite yet.

What am I doing wrong?

© Stack Overflow or respective owner

Related posts about ASP.NET

Related posts about content