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?