In this tutorial, you learn how to apply an AutoCompleteExtender control to a TextBox in order to display auto-complete suggestions as you type.
We'll create an auto-complete TextBox by following these steps (1) Add a ToolkitScriptManager (2) Add a TextBox control (3) Add an AutoCompleteExtender (4) Add a page method.
To learn how to install the Ajax Control Toolkit, see the
Ajax Control Toolkit page.
Add a ToolkitScriptManager
Before you can use any of the Ajax Control Toolkit controls in a page, you first need to add a ToolkitScriptManager to the page. You can drag the ToolkitScriptManager from the Visual Studio Toolbox window onto the page. The ToolkitScriptManager is located in the
Ajax Control Toolkit tab under the Toolbox.
- <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
- </asp:ToolkitScriptManager>
Add a TextBox Control
The AutoCompleteExtender works with a standard ASP.NET TextBox control. In Design view, drag a TextBox control from under the Standard tab in the Toolbox onto your page.
Next, change the ID of the TextBox control to
txtMovie. You can change the ID in the Properties Window. The resulting source code looks like this:
- <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
- </asp:ToolkitScriptManager>
-
- <asp:TextBox ID="txtMovie" runat="server"></asp:TextBox>
Add an AutoCompleteExtender
The next step is to apply an AutoCompleteExtender control to the TextBox. Add the following AutoCompleteExtender control to your page:
- <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
- </asp:ToolkitScriptManager>
-
- <asp:TextBox ID="txtMovie" runat="server"></asp:TextBox>
-
- <asp:AutoCompleteExtender
- ID="AutoCompleteExtender1"
- TargetControlID="txtMovie"
- runat="server" />
Add a Page Method
The final step is to create a method that returns the auto-complete suggestions. You can return auto-complete suggestions from an ASMX Web service, a WCF Web service, or a static page method. We use a static page method.
The easiest way to add the static page method is to click on the
Add AutoComplete page method smart tag option. Selecting this menu option will create a new page method named GetCompletionList:
VB
- <System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()>
- Public Shared Function GetCompletionList(ByVal prefixText As String, ByVal count As Integer, ByVal contextKey As String) As String()
- Return Nothing
- End Function
C#
- [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
- public static string[] GetCompletionList(string prefixText, int count, string contextKey) {
- return default(string[]);
- }
Notice that this method is passed parameters which represent what the user has typed into the TextBox (prefixText) and the number of auto-complete suggestions to show (count).
The following GetCompletionList() method returns a matching movie from a list of movies:
VB
- <System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()>
- Public Shared Function GetCompletionList(ByVal prefixText As String, ByVal count As Integer, ByVal contextKey As String) As String()
-
- Dim movies() As String = {"Star Wars", "Star Trek", "Superman", "Memento", "Shrek", "Shrek II"}
-
-
- Return (
- From m In movies
- Where m.StartsWith(prefixText,StringComparison.CurrentCultureIgnoreCase)
- Select m).Take(count).ToArray()
- End Function
C#
- [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
- public static string[] GetCompletionList(string prefixText, int count, string contextKey) {
-
- string[] movies = {"Star Wars", "Star Trek", "Superman", "Memento", "Shrek", "Shrek II"};
-
-
- return (from m in movies where m.StartsWith(prefixText,StringComparison.CurrentCultureIgnoreCase) select m).Take(count).ToArray();
- }
The following TextBox illustrates how the AutoCompleteExtender works. Enter the text
Star into the TextBox and you will get matching suggestions.