RadControls for ASP.NET AJAX
There are two reasons for not getting the OnItemClick server-side event fired:
CopyASPX
<telerik:RadMenu ID="RadMenu1"
runat="server"
OnItemClick="RadMenu1_ItemClick">
CopyC#
protected void RadMenu1_ItemClick(object sender, Telerik.Web.UI.RadMenuEventArgs e)
{
Response.Write("You clicked: " + e.Item.Text);
}
CopyASPX
<telerik:RadMenu ID="RadMenu1" runat="server" OnItemClick="RadMenu1_ItemClick">
<items>
<telerik:RadMenuItem runat="server"
Text="This item will not fire ItemClick event"
NavigateUrl="myPage.aspx">
</telerik:RadMenuItem>
This effectively disables PostBacks (OnItemClick event) because the item navigate to the particular URL rather than posting back. One of the possible solutions is to subscribe to the ItemDataBound / ItemCreated event and set the NavigateUrl property to an empty string. You should, however, store the NavigateUrl property somewhere (e.g. in the Value or Attributes[] properties) so you can use it later to navigate after handling ItemClick events.
Here is a simple code snippet:
CopyC#
protected void RadMenu1_ItemDataBound(object sender, RadMenuEventArgs e)
{
e.Item.Attributes["NavigateUrl"] = e.Item.NavigateUrl;
e.Item.NavigateUrl = "";
}
protected void RadMenu1_ItemClick(object sender, RadMenuEventArgs e)
{
Response.Redirect(e.Item.Attributes["NavigateUrl"].ToString());
}