In this article I will explain with an example, how to use 
jQuery ImageAutoComplete plugin in ASP.Net using C# and VB.Net.
Note: 
jQuery ImageAutoComplete is now depreciated. The 
jQuery AutoComplete will be used to display Image by creating custom 
AutoComplete Item.
 
     
     
    Database
    Here I am making use of Microsoft’s Northwind Database. You can download it from here.
    
     
     
    Images
    The Image for the 
jQuery AutoComplete TextBox will be saved in the 
photos Folder (Directory) of ASP.Net Project.
![Using jQuery ImageAutoComplete Plugin in ASP.Net]() 
     
     
    HTML Markup
    The HTML Markup consists of following controls:
    TextBox – For capturing user input.
    Button – For displaying selected data.
    The Button has been assigned with an OnClick event handler.
    
        <asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="Submit" />
     
     
     
    Implementing AutoComplete Plugin with Images
    Inside the HTML, the following CSS file is inherited.
    1. jquery-ui.css
    And then, the following JS Scripts files are inherited.
    1. jquery.min.js
    2. jquery-ui.js
    Inside the 
jQuery document ready event handler, the 
jQuery AutoComplete plugin has been applied to the TextBox.
The 
jQuery AutoComplete plugin has been assigned with the following properties and functions.
Properties:
    minLength – For setting minimum character length needed for suggestions to be rendered. Here it is set to 1.
     
    Functions:
    source – Inside this function, a 
jQuery AJAX call is made to the 
GetEmployees WebMethod (PageMethod) and the returned list of employees acts as a source of data to the 
jQuery AutoComplete.
 
    The data received from the server is processed inside the 
jQuery AJAX call 
Success event handler and path of the Image file and Name of the employee are set as 
label and 
value respectively.
 
    create – Inside the function, the 
jQuery AutoComplete plugin has been assigned with a 
renderItem function, inside which an HTML i.e. Unordered List (UL) is generated.
 
    The HTML consist of two DIVs, one for displaying the Employee Name and other for displaying the Image.
    Note: The Employee Name is set with the value the label property and the src attribute of the Image element is set with the value property.
     
    Finally, the generated Unordered List is assigned to the LI tag which is ultimately returned.
    
        <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css" />
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
        <script type="text/javascript" src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
        <script type="text/javascript">
            $(function () {
                $("[id*=txtSearch]").autocomplete({
                    source: function (request, response) {
                        $.ajax({
                            url: 'Default.aspx/GetEmployees',
                            data: "{ 'prefixText': '" + request.term + "'}",
                            dataType: "json",
                            type: "POST",
                            contentType: "application/json; charset=utf-8",
                            success: function (data) {
                                response($.map(data.d, function (item) {
                                    return {
                                        label: item.split('-')[0],
                                        val: item.split('-')[1]
                                    }
                                }))
                            },
                            error: function (response) {
                                alert(response.responseText);
                            },
                            failure: function (response) {
                                alert(response.responseText);
                            }
                        });
                    },
                    minLength: 1,
                    create: function () {
                        $(this).data('ui-autocomplete')._renderItem = function (ul, item) {
                            var items = $('<div class="container">'
                                + '<div class="item"><img class="image" src="' + item.val + '" /></div>'
                                + '<div class="item">  ' + item.label + '</div><br /><br />'
                                + '</div>');
                            return $("<li>").append(items).appendTo(ul);
                        }
                    }
                });
            });
        </script>
     
     
     
    WebMethod (PageMethod)
    
    Inside the 
WebMethod, the connection is read from 
Web.Config file and a connection to the database is established using the 
SqlConnection class.
 
    And the SELECT query along with the TextBox value is passed as parameter to SqlCommand class object.
    After that, using ExecuteReader method of SqlCommand class, the records are fetched from the database and stored into a Generic List collection of string type.
    Finally, the Generic List collection is converted into an Array and returned to 
jQuery AJAX call.
C#
    
        [WebMethod]
        public static string[] GetEmployees(string prefixText)
        {
            List<string> employees = new List<string>();
            string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            string sql = "SELECT EmployeeId, FirstName, LastName FROM Employees WHERE FirstName LIKE @SearchText + '%'";
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    cmd.Parameters.AddWithValue("@SearchText", prefixText);
                    con.Open();
                    using (SqlDataReader sdr = cmd.ExecuteReader())
                    {
                        while (sdr.Read())
                        {
                            employees.Add(string.Format("{0} {1}-photos/{2}.jpg", sdr["FirstName"], sdr["LastName"], sdr["EmployeeId"]));
                        }
                    }
                    con.Close();
                }
            }
         
            return employees.ToArray();
        }
     
     
    VB.Net
    
        <WebMethod>
        Public Shared Function GetEmployees(prefixText As String) As String()
            Dim customers As New List(Of String)()
            Dim constr = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Dim sql = "SELECT EmployeeId, FirstName, LastName FROM Employees WHERE FirstName LIKE @SearchText + '%'"
            Using con As New SqlConnection(constr)
                Using cmd As New SqlCommand(sql, con)
                    cmd.Parameters.AddWithValue("@SearchText", prefixText)
                    con.Open()
                    Using sdr As SqlDataReader = cmd.ExecuteReader()
                        While sdr.Read()
                            customers.Add(String.Format("{0} {1}-photos/{2}.jpg", sdr("FirstName"), sdr("LastName"), sdr("EmployeeId")))
                        End While
                    End Using
                    con.Close()
                End Using
                Return customers.ToArray()
            End Using
        End Function
     
     
     
    Displaying selected value using C# and VB.Net
    When the 
Submit Button is clicked, the value of the 
TextBox is fetched from the 
Request.Form collection and displayed in 
JavaScript Alert MessageBox using 
RegisterStartupScript method.
C#
    
        protected void Submit(object sender, EventArgs e)
        {
            string name = Request.Form[txtSearch.UniqueID];
            ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('" + name + "');", true);
        }
     
     
    VB.Net
    
        Protected Sub Submit(sender As Object, e As EventArgs) Handles btnSubmit.Click
            Dim name As String = Request.Form(txtSearch.UniqueID)
            ClientScript.RegisterStartupScript(Me.GetType(), "alert", "alert('" & name & "');", True)
        End Sub
     
     
     
    Screenshot
    ![Using jQuery ImageAutoComplete Plugin in ASP.Net]() 
     
     
    
	    Browser Compatibility
	    
	    * All browser logos displayed above are property of their respective owners.
	     
	     
     
    Downloads