Introduction:
In this article,i am going to explain about how to create auto complete textbox using wcf with sample application.
Main:
A service for the auto-complete extender can have any number of operations, but all have the same prototype. Here’s
a possible contract,
public string[] GetExtendedText(string prefixText, int count)
{
GetAutoTextDataContext objautocontext = new GetAutoTextDataContext();
string[] fulltext = (from n in objautocontext.Emps
where n.FirstName.StartsWith(prefixText)
select n.FirstName).ToArray();
return fulltext;
}
public string[] GetExtendedText(string prefixText, int count) { GetAutoTextDataContext objautocontext = new GetAutoTextDataContext(); string[] fulltext = (from n in objautocontext.Emps where n.FirstName.StartsWith(prefixText) select n.FirstName).ToArray(); return fulltext; } |
in this demonstartion we are just going to call WCF service instead of web service,
Create a new web application and named it WcfAutoCompleteExtender,

Add a class under app_data dir and named it AutoExtender.cs,and define the service contract,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
namespace WcfAutoCompleteExtender
{
[ServiceContract(Namespace = "NetProgrammingHelp", Name = "AutoCompleteTextBoxService")]
public interface IAutoCompleteSvc
{
[OperationContract]
string[] GetExtendedText(string prefixText, int count);
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class AutoCompleteservice : IAutoCompleteSvc
{
public string[] GetExtendedText(string prefixText, int count)
{
GetAutoTextDataContext objautocontext = new GetAutoTextDataContext();
string[] fulltext = (from n in objautocontext.Emps
where n.FirstName.StartsWith(prefixText)
select n.FirstName).ToArray();
return fulltext;
}
}
}
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; namespace WcfAutoCompleteExtender { [ServiceContract(Namespace = "NetProgrammingHelp", Name = "AutoCompleteTextBoxService")] public interface IAutoCompleteSvc { [OperationContract] string[] GetExtendedText(string prefixText, int count); } [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class AutoCompleteservice : IAutoCompleteSvc { public string[] GetExtendedText(string prefixText, int count) { GetAutoTextDataContext objautocontext = new GetAutoTextDataContext(); string[] fulltext = (from n in objautocontext.Emps where n.FirstName.StartsWith(prefixText) select n.FirstName).ToArray(); return fulltext; } } } |
define the ajax behaviours in web.config,
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AjaxServiceBehaviour">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="WcfAutoCompleteExtender.AutoCompleteservice">
<endpoint address=""
behaviorConfiguration="AjaxServiceBehaviour"
binding="webHttpBinding"
contract="WcfAutoCompleteExtender.IAutoCompleteSvc" />
</service>
</services>
</system.serviceModel>
<system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="AjaxServiceBehaviour"> <enableWebScript /> </behavior> </endpointBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <services> <service name="WcfAutoCompleteExtender.AutoCompleteservice"> <endpoint address="" behaviorConfiguration="AjaxServiceBehaviour" binding="webHttpBinding" contract="WcfAutoCompleteExtender.IAutoCompleteSvc" /> </service> </services> </system.serviceModel> |
Add a new text file under solution and named it AutoService.svc,and define the endpoint of this service
<%@ ServiceHost
Service="WcfAutoCompleteExtender.AutoCompleteservice"
Language="C#"
Debug="true"
CodeBehind="~/App_Data/AutoExtender.cs" %>
<%@ ServiceHost Service="WcfAutoCompleteExtender.AutoCompleteservice" Language="C#" Debug="true" CodeBehind="~/App_Data/AutoExtender.cs" %> |
Next call the service using auto extender,
<form id="form1" runat="server">
<ajaxToolkit:ToolkitScriptManager ID="ScriptManager1" runat="server">
</ajaxToolkit:ToolkitScriptManager>
<asp:TextBox runat="server" ID="myTextBox" Width="300" autocomplete="off" />
<ajaxToolkit:AutoCompleteExtender
runat="server"
ID="autoComplete1"
enabled="true"
TargetControlID="myTextBox"
ServicePath="~/AutoService.svc"
ServiceMethod="GetExtendedText"
MinimumPrefixLength="1"
CompletionSetCount="20"
CompletionInterval="0000"
EnableCaching="true">
</ajaxToolkit:AutoCompleteExtender>
</form>
<form id="form1" runat="server"> <ajaxToolkit:ToolkitScriptManager ID="ScriptManager1" runat="server"> </ajaxToolkit:ToolkitScriptManager> <asp:TextBox runat="server" ID="myTextBox" Width="300" autocomplete="off" /> <ajaxToolkit:AutoCompleteExtender runat="server" ID="autoComplete1" enabled="true" TargetControlID="myTextBox" ServicePath="~/AutoService.svc" ServiceMethod="GetExtendedText" MinimumPrefixLength="1" CompletionSetCount="20" CompletionInterval="0000" EnableCaching="true"> </ajaxToolkit:AutoCompleteExtender> </form> |
thatsit!
Conclusion:
Hope this helps,
Happy coding.
