Hi Telerik Team,
i am using radmenu in Master page.
when i try to click the radmenu item ,i am not able to fire the click event on radmenu.
i searched some forums in telerik in which the people were saying set the Autopostback property to True.
when i try to set the autopostback property ,that property is not showing in property box of radmenu control.
means i am not able to find the autopost back property in control.
Can you pls provide the solution for this issue.
15 Answers, 1 is accepted
There are two reasons for not getting the OnItemClick event fired:
- You have not subscribed to the OnItemClick event.
<telerik:RadMenu ID="RadMenu1" |
runat="server" |
OnItemClick="RadMenu1_ItemClick"> |
protected void RadMenu1_ItemClick(object sender, Telerik.Web.UI.RadMenuEventArgs e) |
{ |
Response.Write("You clicked: " + e.Item.Text); |
} |
- You have set the NavigateUrl property of the menu item. 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 events 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:
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) |
{ |
//Custom code here |
//Navigate |
Response.Redirect(e.Item.Attributes["NavigateUrl"].ToString()); |
} |
I hope this helps.
Best wishes,
Veskoni
the Telerik team
Instantly find answers to your questions at the new Telerik Support Center
and i use this code but not solve my problem?!
Please explain in more detail your scenario or better - send us a sample project.
Thanks
Best wishes,
Veselin Vasilev
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
i use a simple menu with specify a navigation url
the problem after follow your instractions 1 and 2
When i try to click the radmenu item ,i am not able to fire the click event on radmenu.
The Menu
<telerik:RadMenu Style="left: 100px; top: -116px;" ID="Telerik2RedMenu" runat="server"
OnItemClick="Telerik2RedMenu_ItemClick" OnClientItemClicked="onClicking">
<CollapseAnimation Duration="200" Type="OutQuint" />
<Items>
<telerik:RadMenuItem runat="server" Text="Incoming">
<Items>
<telerik:RadMenuItem runat="server" Text="Incoming" NavigateUrl="Income/Income.aspx">
</telerik:RadMenuItem>
</Items>
</telerik:RadMenuItem>
<telerik:RadMenuItem runat="server" Text="Outgoing">
<Items>
<telerik:RadMenuItem runat="server" Text="Outgoing" NavigateUrl="Outgoing.aspx">
</telerik:RadMenuItem>
</Items>
</telerik:RadMenuItem>
<telerik:RadMenuItem runat="server" Text="Setup">
<Items>
<telerik:RadMenuItem runat="server" Text="Managements" NavigateUrl="Setup/Managements.aspx">
</telerik:RadMenuItem>
</Items>
</telerik:RadMenuItem>
</Items>
</telerik:RadMenu>
and The VB Code
Protected Sub Telerik2RedMenu_ItemClick(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadMenuEventArgs) Handles Telerik2RedMenu.ItemClick
lblPageTitle.Text = e.Item.Text
Page.Header.Title = lblPageTitle.Text
Response.Redirect(e.Item.Attributes(
"NavigateUrl").ToString())
End Sub
Protected Sub Telerik2RedMenu_ItemCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadMenuEventArgs) Handles Telerik2RedMenu.ItemCreated
If e.Item.NavigateUrl <> "" Then
e.Item.Attributes(
"NavigateUrl") = e.Item.NavigateUrl
e.Item.NavigateUrl =
""
End If
End Sub
I ran your code and the ItemClick event gets fired.
Please find attached my test page and let me know what is different in your case.
Regards,
Veselin Vasilev
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
I'm having the same issue and have not found a solution to this problem yet.
I ran your code and the same problem occurs.
Whenever you have a url defined in NavigateUrl property, the click even does not fire for that menu item.
I also added NavigateUrl values for the top menus in your example and the click event for those also did not work.
Any help would be appreciated.
Rod
I implemented the code you suggested in the ItemClick and ItemDataBound events to persist the NavigateUrl property value.
The only thing I lost from all this is that now the selected menu doesn't stay selected after I change pages.
Thanks for any help,
Rod
string path = Request.Url.PathAndQuery;
if (e.Item.NavigateUrl.Contains(path.Substring(path.LastIndexOf("/"))))
e.Item.HighlightPath();
Cheers,
Rod
the code is same but my page does not work
i made workaround by make the code in page load and check the clicked item.
Best Regards,
Ahmad
I am glad that you all have found a solution to your problems.
Best wishes,
Veselin Vasilev
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
<telerik:RadMenu ID="Navmenu" runat="server" CssClass="nav" Skin="Telerik" Flow="Horizontal"
OnItemClick="Navmenu_ItemClick">
</telerik:RadMenu>
I create the Menu Dynamically.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim user As eTech.SmartSurvey.Security.SmartSurveyPrincipal = CType(Session("CslaPrincipal"), _
eTech.SmartSurvey.Security.SmartSurveyPrincipal)
If user.IsInRole("InstructionSourceOperator") Then
lblUserRole.Text = "InstructionSourceOperator"
CreateInstructionSourceOperatorMenu()
ElseIf user.IsInRole("InstructionSourceAdministrator") Then
lblUserRole.Text = "InstructionSourceAdministrator"
ElseIf user.IsInRole("PanelOperator") Then
lblUserRole.Text = "PanelOperator"
CreatePanelOperatorMenu()
ElseIf user.IsInRole("PanelAdministrator") Then
lblUserRole.Text = "PanelAdministrator"
ElseIf user.IsInRole("PanelSurveyor") Then
lblUserRole.Text = "PanelSurveyor"
CreatePanelSurveyorMenu()
End If
Dim item As RadMenuItem = Navmenu.FindItemByUrl(Request.Url.PathAndQuery)
If item IsNot Nothing Then
item.HighlightPath()
End If
End If
End Sub
Private Sub CreatePanelOperatorMenu()
Dim item1 As New RadMenuItem()
item1.Text = "Home"
Dim item2 As New RadMenuItem()
item2.Text = "Instructions"
Dim item3 As New RadMenuItem()
item3.Text = "Add Instructions"
Dim item4 As New RadMenuItem()
item4.Text = "Surveyors"
Dim item5 As New RadMenuItem()
item5.Text = "Reports"
With Navmenu.Items
.Add(item1)
.Add(item2)
.Add(item3)
.Add(item4)
.Add(item5)
End With
End Sub
Private Sub CreateInstructionSourceOperatorMenu()
Dim item1 As New RadMenuItem()
item1.Text = "Home"
Dim item2 As New RadMenuItem()
item2.Text = "Instructions"
Dim item3 As New RadMenuItem()
item3.Text = "Add Instructions"
With Navmenu.Items
.Add(item1)
.Add(item2)
.Add(item3)
End With
End Sub
Private Sub CreatePanelSurveyorMenu()
Dim item1 As New RadMenuItem()
item1.Text = "Home"
Dim item2 As New RadMenuItem()
item2.Text = "View Diary"
Dim item3 As New RadMenuItem()
item3.Text = "Instructions"
With Navmenu.Items
.Add(item1)
.Add(item2)
.Add(item3)
End With
End Sub
Protected Sub Navmenu_ItemClick(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadMenuEventArgs) Handles Navmenu.ItemClick
Dim user As eTech.SmartSurvey.Security.SmartSurveyPrincipal = CType(Session("CslaPrincipal"), _
eTech.SmartSurvey.Security.SmartSurveyPrincipal)
e.Item.BackColor = Drawing.Color.Transparent
If user.IsInRole("PanelOperator") Then
Select Case Navmenu.Items(e.Item.Index).Text
Case "Home"
Dim ItemClicked As Telerik.Web.UI.RadMenuItem = Navmenu.FindItemByText("Surveyors")
ItemClicked.BackColor = Drawing.Color.White
e.Item.NavigateUrl = "Default.aspx"
Case "Instructions"
e.Item.BackColor = Drawing.Color.White
e.Item.NavigateUrl = "Instructions.aspx"
Case "Add Instructions"
e.Item.BackColor = Drawing.Color.White
e.Item.NavigateUrl = "AddNewInstruction.aspx"
Case "Surveyors"
e.Item.CssClass = "rmFocused"
e.Item.BackColor = Drawing.Color.White
e.Item.NavigateUrl = "Surveyors.aspx"
Case "Reports"
Dim ItemClicked As Telerik.Web.UI.RadMenuItem = Navmenu.FindItemByText("Reports")
e.Item.BackColor = Drawing.Color.White
e.Item.NavigateUrl = "Reports.aspx"
End Select
ElseIf user.IsInRole("InstructionSourceOperator") Then
Select Case Navmenu.Items(e.Item.Index).Text
Case "Home"
Navmenu.Items(e.Item.Index).BackColor = Drawing.Color.White
Navmenu.Items(e.Item.Index).NavigateUrl = "InstructionSourceDefault.aspx"
Case "Instructions"
Navmenu.Items(e.Item.Index).BackColor = Drawing.Color.White
Navmenu.Items(e.Item.Index).NavigateUrl = "InstructionSourceInstructions.aspx"
Case "Add Instructions"
Navmenu.Items(e.Item.Index).BackColor = Drawing.Color.White
Navmenu.Items(e.Item.Index).NavigateUrl = "InstructionSourceAddInstruction.aspx"
End Select
ElseIf user.IsInRole("PanelSurveyor") Then
Select Case Navmenu.Items(e.Item.Index).Text
Case "Home"
Navmenu.Items(e.Item.Index).BackColor = Drawing.Color.White
Navmenu.Items(e.Item.Index).NavigateUrl = "SurveyorDefault.aspx"
Case "View Diary"
Navmenu.Items(e.Item.Index).BackColor = Drawing.Color.White
Navmenu.Items(e.Item.Index).NavigateUrl = "SurveyorDiary.aspx"
Case "Instructions"
Navmenu.Items(e.Item.Index).BackColor = Drawing.Color.White
Navmenu.Items(e.Item.Index).NavigateUrl = "SurveyorInstructions.aspx"
End Select
End If
'e.Item.HighlightPath()
'e.Item.BackColor = Drawing.Color.White
End Sub
Now the BackColor of the Selected Item does turn White after selecting it, then If I click on another Item the previously clicked item still
has a background of white. How can I get this to work the way it should?
Basically I want to apply a style to the Selected Item. I have even tried doing e.Item.CssClass = "rmFocused" but that style doesn't even get applied. I have put the style into my Stylesheet.css file.
.RadMenu_Telerik .rmItem .rmFocused
{
background: #fff;
}
I have looked at your example and the only thing that's different is the fact that you have declaratively created the menu and I'm dynamically creating it. Please help.
You are setting the NavigateUrl property of the menu items so the next time an item is clicked - it redirects instead of firing again the NodeClick event.
As for the CssClass property, have you tried:
e.Item.CssClass += " rmFocused" |
I hope this helps.
Regards,
Veselin Vasilev
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
The information provided below was very helpful. Can anyone help me with getting the DatafieldID from the radmenu through javascript and code behind.
Regards,
Patrick.
Can anyone help me out for my issue....
How can i show sub menu on mouse over when tab index is change in Radmenu?
Thanks in Advance
Regards
Reshmaa Ramamurthy
I suppose what you want is to focus on the particular menu item with keyboard navigation.
Check the following demo which tells about your requirement
Menu - Keyboard Support
Thanks
Princy