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
>