Hi guys,
According to this help:
http://www.telerik.com/help/aspnet-ajax/menu-populate-from-wcf-service.html
I can successfully run OnClientItemPopulatingHandler and there is debug breakpoint that show me GetData is run and the items.count is 4. After that,there is no any radmenu drop-down as expected. Here is the code:
Mark-up
.SVC
svc code behind
Did I miss sth? If so, please tell me. Thx!
According to this help:
http://www.telerik.com/help/aspnet-ajax/menu-populate-from-wcf-service.html
I can successfully run OnClientItemPopulatingHandler and there is debug breakpoint that show me GetData is run and the items.count is 4. After that,there is no any radmenu drop-down as expected. Here is the code:
Mark-up
<!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 runat="server"> <title></title> <script type="text/javascript"> function OnClientItemPopulatingHandler(sender, e) { var context = e.get_context(); //using jQuery to get the checked item and pass it to the server context["ProductSuite"] = $telerik.$("input[name='rblSuites']:checked").val(); } function OnClientItemPopulatedHandler(sender, e) { var items = e.get_item().get_items(); for (var i = 0; i < items.get_count(); i++) { var item = items.getItem(i); //getting the attribute of the item var myCustomAttribute = item.get_attributes().getAttribute("MyCustomAttribute"); //do something with the attribute } }</script></head><body> <form id="form1" runat="server"> <div> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <asp:RadioButtonList ID="rblSuites" runat="server"> <asp:ListItem Selected="True">ASP.NET AJAX</asp:ListItem> <asp:ListItem>WPF</asp:ListItem> <asp:ListItem>Silverlight</asp:ListItem> <asp:ListItem>Winforms</asp:ListItem> </asp:RadioButtonList> <telerik:RadMenu ID="RadMenu1" OnClientItemPopulating="OnClientItemPopulatingHandler" OnClientItemPopulated="OnClientItemPopulatedHandler" runat="server"> <Items> <telerik:RadMenuItem Text="Products" ExpandMode="WebService"> </telerik:RadMenuItem> </Items> <WebServiceSettings Method="GetData" Path="../Services/WcfTopMenu.svc" /> </telerik:RadMenu> </div> </form></body></html>.SVC
<%@ ServiceHost Language="VB" Debug="true" Service="WcfTopMenu" CodeBehind="~/App_Code/WcfTopMenu.vb" %>svc code behind
Imports System.ServiceModelImports System.ServiceModel.ActivationImports System.ServiceModel.WebImports Telerik.Web.UI<ServiceContract([Namespace]:="")> _<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _Public Class WcfTopMenu <OperationContract()> _ Public Function GetData(ByVal item As RadMenuItemData, ByVal context As IDictionary(Of String, Object)) As RadMenuItemData() Dim items As New List(Of RadMenuItemData)() 'use the context to get the selected radio button Dim productsSuite As String = context("ProductSuite").ToString() 'the datasource 'Dim radControls() As String = New String() {"RadMenu", "RadMenu", "RadTreeView", "RadToolBar"} Dim radControls As List(Of [String]) = New List(Of String)() From { _ "RadMenu", _ "RadMenu", _ "RadTreeView", _ "RadToolBar" _ } For Each radControl As String In radControls 'Optional: set the attribute of the item which will be used 'in the OnClientNodePopulated event Dim newItem As New RadMenuItemData() With { _ .Text = String.Format("{0} for {1}", radControl, productsSuite), _ .Value = radControl, _ .ImageUrl = "Images/" + radControl + ".gif", _ .Attributes = New Dictionary(Of String, Object)() From {{"MyCustomAttribute", radControl}} } items.Add(newItem) Next Return items.ToArray() End FunctionEnd ClassDid I miss sth? If so, please tell me. Thx!