Hi, I had a dynamic radmenu (using ArrayList) in my masterpage.
I want to get the DataFieldID when user click the menu item, so i put a OnItemClick event in the code behind, but the event cannot be fire.
How can I fire the event ?
Or is there any other method to get the DataFieldID when user click the item ? thanks.
My masterpage code as follow:
<%@ Master Language="VB" CodeFile="LRDB.master.vb" Inherits="LRDB" %><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><!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 id="Head1" runat="server"> <title></title> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> <link href="Style/StyleSheet.css" rel="stylesheet" type="text/css" /></head><body> <form id="form1" runat="server"> <telerik:RadScriptManager runat="server" ID="RadScriptManager1"/> <telerik:RadSkinManager ID="QsfSkinManager" runat="server" ShowChooser="false" /> <telerik:RadFormDecorator ID="QsfFromDecorator" runat="server" DecoratedControls="All" EnableRoundedCorners="true" /> <div class="div_menu"> <telerik:RadMenu ID="RadMenu1" runat="server" EnableRoundedCorners="True" EnableShadows="True" EnableTextHTMLEncoding="True" Skin="Windows7" DataSourceID="ObjectDataSource1" DataFieldID="Function_ID"DataFieldParentID="ParentID" DataTextField="Description" DataNavigateUrlField="Page" OnDataBound="RadMenu1_DataBound" OnItemDataBound="RadMenu1_ItemDataBound" Width="100%" OnItemClick="RadMenu1_ItemClick"> </telerik:RadMenu> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetMenuByFunctionID" TypeName="LRDB"> <SelectParameters> <asp:SessionParameter DefaultValue="" Name="id" SessionField="FID" Type="String" /> </SelectParameters> </asp:ObjectDataSource> <hr class= "menu_hr" /> <asp:Label ID="lb_panel" runat="server" Font-Bold="true" ForeColor="#485C7F" Font-Names="Arial" Font-Size="20pt"></asp:Label> <div id="content_function" class="content_function"> <div id="content" class="content"><asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server" ></asp:ContentPlaceHolder> </div> </div> </div> </form></body></html>VB code behind of the masterpage:
Imports SystemImports System.Collections.GenericImports Telerik.Web.UIPartial Class LRDB Inherits System.Web.UI.MasterPage Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then Dim UID As String = HttpContext.Current.Session("UserID") If Not IsNothing(UID) Then 'Generate Menu Bar By UserID, RoleTypeID Dim FID As String = GetFunctionIDByRoleTypeID(GetRoleTypeIDByUserID(UID)) HttpContext.Current.Session("FID") = FID Else Response.Redirect("~/Login.aspx") End If End If End Sub Protected Sub RadMenu1_ItemClick(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadMenuEventArgs) Handles RadMenu1.ItemClick Dim SelectFunctionID As Integer = 0 SelectFunctionID = RadMenu1.SelectedValue End Sub Protected Sub RadMenu1_DataBound(ByVal sender As Object, ByVal e As EventArgs) Me.InsertSeparator(0, Me.RadMenu1) End Sub Public Sub RadMenu1_ItemDataBound(ByVal sender As Object, ByVal e As RadMenuEventArgs) If e.Item.Level = 0 Then Me.InsertSeparator(e.Item.Index + 1, Me.RadMenu1) End If End Sub Private Sub InsertSeparator(ByVal index As Integer, ByVal menu As RadMenu) Dim separator As New RadMenuItem() separator.IsSeparator = True separator.Text = "|" menu.Items.Insert(index, separator) End SubEnd ClassAnd the Common VB function:
Public Function GetFunctionIDByRoleTypeID(ByVal id As String) As String Dim FID As String = "" Dim rList = Split(id, ",") Dim dc As New dcLRDBDataContext Dim i As Integer = 0 'Get Dintinct Function ID Dim result = (From cs In dc.db_RoleType_AccessRights Where rList.Contains(cs.RoleTypeID) Select cs.FunctionID Order By FunctionID Ascending).Distinct().ToList If result.Count > 0 Then For i = 0 To result.Count - 1 FID += result.Item(i).ToString & "," Next Else FID = result.Item(0).ToString End If dc.Dispose() Return FIDEnd FunctionPublic Function GetRoleTypeIDByUserID(ByVal id As Integer) As String Dim RoleType_list As String = "" Dim dc As New dcLRDBDataContext Dim result = (From cs In dc.db_UserRoles Where cs.UserID = id Select cs.RoleTypeID).ToList Dim i As Integer = 0 If Not IsNothing(result) Then If result.Count > 0 Then For i = 0 To result.Count - 1 RoleType_list += result.Item(i).ToString & "," Next Else RoleType_list = result.Item(0).ToString End If End If dc.Dispose() Return RoleType_listEnd Function