Search data from HTML Table using jquery
In this article we will learn how to search data from table
without hitting front-end and back-end (means without hit database or server
side code). For search the records from an entire page there are two ways for
do it. For search the specific records we will send the request using ajax
method and search the records from database then result will be shown.And
another method is that we will store all the records in any collection like DataSet or Session or any other variable and use LINQ for filter it.
After click on OK button our project is created. Now I will
add GridView control for bind the records.
And create an input control for enter search value.
After got the total record I will bind it in our gridview
which is "searchGridview".
}
After successfully bind the record in gridview show like.
});
Cancel the search value if user press backspace or ESC key.
//Reset values
Below code will shown jquery to have a : Contains selector which is case in sensitive, the :contains selector remains unchanged.
};
Now here is the full code of client side you can use it.
Server side code.
}
Output:
Conclusion: In this article we have learnt that how to search records from HTML Table without post a page or without hit server and database.
Now all these ways will take long time and always post your
page which your application will running very slow because here are the two
reasons first post your page on server side, if huge amount of data. For solve
this issue we will search data from Jquery in HTML Table.
Here is the idea and this idea’s will not post the page on
server side and not hit database. To search the records using Jquery.
Let’s start it with example.
Open Visual Studio-> Create new project which is
"SearchRecords".
After click on Project
After click on OK button below dialog box will be open and
then select empty template and then click on OK button.
Now after click on OK
button our project is created successfully and then we add a new web page which
you can see below screen-shot.
<form id="form1" runat="server">
<div>
<asp:GridView ID="searchGridView" runat="server" Style="width: 80%; margin-left: 100px" ForeColor="Black" BackColor="#CCCCFF" BorderColor="#00FFCC" BorderStyle="Solid" Font-Names="Arial">
<AlternatingRowStyle BackColor="#FFCC99" BorderColor="#00FFCC" /></asp:GridView>
</div>
</form>
<p style="text-align: right; width: 500px; margin-top: 50px; margin-left: 150px">
<span style="font-weight: bold;">Search:</span>
<input type="text" id="txtSearch" name="txtSearch" placeholder="Type search text" maxlength="50" style="height: 25px; font:
100" />
</p>
Now I will fetch the
records from this method.
public DataTable getStudentDetails()
{
SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection(mainConnectionString);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spstudentList";
cmd = new SqlCommand(cmd.CommandText,con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd.CommandText, con);
DataTable employees = new DataTable();
adapter.Fill(employees);
return employees;
}
protected void Page_Load(object sender, EventArgs e)
{
searchGridView.DataSource =
getStudentDetails();
searchGridView.DataBind();
}
After successfully bind the record in gridview show like.
Now when we enter any values for search in above input box.
We will search record without page post and without hitting on server-side we
will use jquery on keyup event for search very fast.
$('#txtSearch').keyup(function () {
if ($('#txtSearch').val().length > 1) {
$('#searchGridView
tr').hide();
$('#searchGridView tr:first').show();
$('#searchGridView tr td:containsNoCase(\'' + $('#txtSearch').val() + \')').parent().show();
}
else if ($('#txtSearch').val().length == 0) {
resetSearchValue();
}Cancel the search value if user press backspace or ESC key.
$('#txtSearch').keyup(function (event) {
if (event.keyCode == 27) {
resetSearchValue();
}
});//Reset values
function resetSearchValue() {
$('#txtSearch').val('');
$('#searchGridView
tr').show();
$('.norecords').remove();
$('#txtSearch').focus();
}Below code will shown jquery to have a : Contains selector which is case in sensitive, the :contains selector remains unchanged.
$.expr[":"].containsNoCase = function (el, i, m) {
var search = m[3];
if (!search) return false;
return eval("/" + search + "/i").test($(el).text());
};
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.cs" Inherits="SearchRecords.Home" %>
<!DOCTYPE html>
<script src="jquery-3.3.1.min.js"></script>
<script language="javascript" type="text/javascript">
$.expr[":"].containsNoCase = function (el, i, m) {
var search = m[3];
if (!search) return false;
return eval("/" + search + "/i").test($(el).text());
};
$(document).ready(function () {
$('#txtSearch').keyup(function () {
if ($('#txtSearch').val().length > 1) {
$('#searchGridView tr').hide();
$('#searchGridView tr:first').show();
$('#searchGridView tr td:containsNoCase(\'' + $('#txtSearch').val() + '\')').parent().show();
}
else if ($('#txtSearch').val().length == 0) {
resetSearchValue();
}
if ($('#searchGridView tr:visible').length == 1) {
$('.norecords').remove();
$('#searchGridView').append('<tr class="norecords"><td
colspan="6" class="Normal" style="text-align:
center">No records were found</td></tr>');
}
});
$('#txtSearch').keyup(function (event) {
if (event.keyCode == 27) {
resetSearchValue();
}
});
});
function resetSearchValue() {
$('#txtSearch').val('');
$('#searchGridView
tr').show();
$('.norecords').remove();
$('#txtSearch').focus();
}
</script>
<html>
<body>
<p style="text-align: right; width: 500px; margin-top: 50px; margin-left: 150px">
<span style="font-weight: bold;">Search:</span>
<input type="text" id="txtSearch" name="txtSearch" placeholder=" type search text" maxlength="50" style="height: 25px; font:
100" />
</p>
<form id="form1" runat="server">
<div>
<asp:GridView ID="searchGridView" runat="server" Style="width: 80%; margin-left: 100px" ForeColor="Black" BackColor="#CCCCFF" BorderColor="#00FFCC" BorderStyle="Solid" Font-Names="Arial">
<AlternatingRowStyle BackColor="#FFCC99" BorderColor="#00FFCC" />
</asp:GridView>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace SearchRecords
{
public partial class Home : System.Web.UI.Page
{
public static readonly string mainConnectionString = ConfigurationManager.ConnectionStrings["con"].ToString();
protected void
Page_Load(object sender, EventArgs e)
{
searchGridView.DataSource =
getStudentDetails();
searchGridView.DataBind();
}
public DataTable getStudentDetails()
{
SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection(mainConnectionString);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spstudentList";
cmd = new SqlCommand(cmd.CommandText,con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd.CommandText, con);
DataTable employees = new DataTable();
adapter.Fill(employees);
return employees;
}
}
}
Output:
Conclusion: In this article we have learnt that how to search records from HTML Table without post a page or without hit server and database.
Leave a Comment