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.
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
Browser Compatibility
* All browser logos displayed above are property of their respective owners.
Downloads