Hi all,
I'm facing the problem while using the RadComboBox. I've used the example from Telerik Demo to populate RadComboBox with data on demant in a new empty project. And when the control calls for the WCF service for data the RadComboBoxContext parameter is empty.
Can you please advice me what I'm doing wrong?
ASPX code:
I'm facing the problem while using the RadComboBox. I've used the example from Telerik Demo to populate RadComboBox with data on demant in a new empty project. And when the control calls for the WCF service for data the RadComboBoxContext parameter is empty.
Can you please advice me what I'm doing wrong?
ASPX code:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> <%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"></asp:Content><asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <div> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadComboBox runat="server" ID="RadComboBox1" Height="100px" EnableLoadOnDemand="true" ShowMoreResultsBox="true" EnableVirtualScrolling="true" EmptyMessage="Type here ..."> <WebServiceSettings Path="~/ComboBoxWcfService.svc" Method="LoadData" /> </telerik:RadComboBox> </div> <asp:LinqDataSource ID="LinqDataSource1" runat="server"></asp:LinqDataSource></asp:Content>
WCF code:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ComboBoxWcfService {
public void DoWork()
{
}
[OperationContract]
public RadComboBoxData LoadData(RadComboBoxContext context)
{
//The RadComboBoxData object contains all required information for load on demand:
// - the items
// - are there more items in case of paging
// - status message to be displayed (which is optional)
AdventureWorksDataContext northwind = new AdventureWorksDataContext();
RadComboBoxData result = new RadComboBoxData();
//Get all items from the Customers table. This query will not be executed untill the ToArray method is called.
var allCustomers = from customer in northwind.Customers
orderby customer.ContactName
select new RadComboBoxItemData
{
Text = customer.ContactName
};
//In case the user typed something - filter the result set
string text = context.Text;
if (!String.IsNullOrEmpty(text))
{
allCustomers = allCustomers.Where(item => item.Text.StartsWith(text));
}
//Perform the paging
// - first skip the amount of items already populated
// - take the next 10 items
int numberOfItems = context.NumberOfItems;
var customers = allCustomers.Skip(numberOfItems).Take(10);
//This will execute the database query and return the data as an array of RadComboBoxItemData objects
result.Items = customers.ToArray();
int endOffset = numberOfItems + customers.Count();
int totalCount = allCustomers.Count();
//Check if all items are populated (this is the last page)
if (endOffset == totalCount)
result.EndOfItems = true;
//Initialize the status message
result.Message = String.Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>",
endOffset, totalCount);
return result;
}
}
WebConfig:
<service behaviorConfiguration="metadataAndDebug" name="WebApplication1.ComboBoxWcfService">
<endpoint address="" behaviorConfiguration="WebBehavior" binding="webHttpBinding"
contract="WebApplication1.ComboBoxWcfService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>