Необходимым условием является наличие «AjaxControlToolKit».
Сначала нам нужно поместить текстовое поле в панель обновления, чтобы частичная обратная передача могла произойти, тем самым исключая перезагрузку всей страницы.Используйте ajax autocompleteExtender, с помощью которого мы можем вызвать сервисный метод, имеющий вызов БД, который будет извлекать данные и заполнять текстовое поле.
<asp:UpdatePanel ID="pnlAcct" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtAcctNum"></asp:TextBox>
<asp:AutoCompleteExtender ID="AutoCompleteExtenderAccount" runat="server" MinimumPrefixLength="1" ServiceMethod="GetSourceAccount" ServicePath="~/AutoComplete/AutoComplete.asmx"
TargetControlID="txtAcctNum" Enabled="True" CompletionSetCount="20" CompletionInterval="1000"
EnableCaching="true">
</asp:AutoCompleteExtender>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtAcctNum" />
</Triggers>
</asp:UpdatePanel>
Вызов службы можно выполнить, добавив WebService (файл .asmx) и записав приведенный ниже код в файл .asmx.cs. Все доступные в строке данные будут отображаться под текстовым полем.
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[] GetSourceAccount(string prefixText, int count)
{
List<string> lstSimilarSource = new List<string>();
//Service call and populating the string
lstSimilarSource = Autocomplete.GetSimilarSource(prefixText, "ACCOUNT");
return lstSimilarSource.ToArray();
}