This is a migrated thread and some comments may be shown as answers.

OnItemClick Event not fire in masterpage

1 Answer 71 Views
Menu
This is a migrated thread and some comments may be shown as answers.
Joe
Top achievements
Rank 1
Joe asked on 12 Apr 2013, 06:07 AM

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">
 
<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 System
Imports System.Collections.Generic
Imports Telerik.Web.UI
 
Partial 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 Sub
 
End Class

And 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 FID
End Function
 
Public 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_list
End Function

 

1 Answer, 1 is accepted

Sort by
0
Kate
Telerik team
answered on 18 Apr 2013, 11:26 AM
Hello Joe,

I tested a scenario with a master and content page but I was not able to get the issue that you describe. Attached to this post you can find a simplified version of my testing page. Give it a try and let me know how it goes. I would also suggest that you open a support ticket where you can attach a very simplified version (that includes only the needed code, you can use a dummy data source) of your  project that reproduced the issue that you get so I can test it locally and help you resolve the problematic behavior.

All the best,
Kate
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Tags
Menu
Asked by
Joe
Top achievements
Rank 1
Answers by
Kate
Telerik team
Share this question
or