Created
December 6, 2022 12:03
-
-
Save kainio/7793c64d3be3e2323754c451e59676ce to your computer and use it in GitHub Desktop.
Search GridView with Paging on TextBox KeyPress using jQuery in ASP.Net
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private static int PageSize = 5; | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
if (!IsPostBack) | |
{ | |
BindDummyRow(); | |
} | |
} | |
private void BindDummyRow() | |
{ | |
DataTable dummy =new DataTable(); | |
dummy.Columns.Add("CustomerID"); | |
dummy.Columns.Add("ContactName"); | |
dummy.Columns.Add("City"); | |
dummy.Rows.Add(); | |
lvCustomers.DataSource = dummy; | |
lvCustomers.DataBind(); | |
} | |
[WebMethod] | |
public static string GetCustomers(string searchTerm,int pageIndex) | |
{ | |
string query ="[GetCustomers_Pager]"; | |
SqlCommand cmd =new SqlCommand(query); | |
cmd.CommandType = CommandType.StoredProcedure; | |
cmd.Parameters.AddWithValue("@SearchTerm", searchTerm); | |
cmd.Parameters.AddWithValue("@PageIndex", pageIndex); | |
cmd.Parameters.AddWithValue("@PageSize", PageSize); | |
cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction = ParameterDirection.Output; | |
return GetData(cmd, pageIndex).GetXml(); | |
} | |
private static DataSet GetData(SqlCommand cmd,int pageIndex) | |
{ | |
string strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString; | |
using (SqlConnection con =new SqlConnection(strConnString)) | |
{ | |
using (SqlDataAdapter sda =new SqlDataAdapter()) | |
{ | |
cmd.Connection = con; | |
sda.SelectCommand = cmd; | |
using (DataSet ds =new DataSet()) | |
{ | |
sda.Fill(ds,"Customers"); | |
DataTable dt =new DataTable("Pager"); | |
dt.Columns.Add("PageIndex"); | |
dt.Columns.Add("PageSize"); | |
dt.Columns.Add("RecordCount"); | |
dt.Rows.Add(); | |
dt.Rows[0]["PageIndex"] = pageIndex; | |
dt.Rows[0]["PageSize"] = PageSize; | |
dt.Rows[0]["RecordCount"] = cmd.Parameters["@RecordCount"].Value; | |
ds.Tables.Add(dt); | |
return ds; | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<form id="form1" runat="server"> | |
Search: | |
<asp:TextBox ID="txtSearch" runat="server" /> | |
<hr /> | |
<asp:ListView ID="lvCustomers" ItemPlaceholderID="itemPlaceHolder1" GroupPlaceholderID="groupPlaceHolder1" | |
runat="server"> | |
<LayoutTemplate> | |
<table id="tblCustomers" border="1px" cellpadding="2" cellspacing="2"> | |
<tr> | |
<th> | |
ContactName | |
</th> | |
<th> | |
CustomerId | |
</th> | |
<th> | |
City | |
</th> | |
</tr> | |
<asp:PlaceHolder ID="GroupPlaceholder1" runat="server" /> | |
</table> | |
</LayoutTemplate> | |
<GroupTemplate> | |
<tr> | |
<asp:PlaceHolder ID="ItemPlaceholder1" runat="server" /> | |
</tr> | |
</GroupTemplate> | |
<ItemTemplate> | |
<td> | |
<%#Eval("CustomerId")%> | |
</td> | |
<td> | |
<%#Eval("ContactName")%> | |
</td> | |
<td> | |
<%#Eval("City")%> | |
</td> | |
</ItemTemplate> | |
</asp:ListView> | |
<br /> | |
<div class="Pager"> | |
</div> | |
</form> | |
<div> | |
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> | |
<script src="ASPSnippets_Pager.min.js" type="text/javascript"></script> | |
<script type="text/javascript"> | |
$(function () { | |
GetCustomers(1); | |
}); | |
$("[id*=txtSearch]").live("keyup", function () { | |
GetCustomers(parseInt(1)); | |
}); | |
$(".Pager .page").live("click", function () { | |
GetCustomers(parseInt($(this).attr('page'))); | |
}); | |
function SearchTerm() { | |
return jQuery.trim($("[id*=txtSearch]").val()); | |
}; | |
function GetCustomers(pageIndex) { | |
$.ajax({ | |
type: "POST", | |
url: "CS.aspx/GetCustomers", | |
data: '{searchTerm: "' + SearchTerm() + '", pageIndex: ' + pageIndex + '}', | |
contentType: "application/json; charset=utf-8", | |
dataType: "json", | |
success: OnSuccess, | |
failure: function (response) { | |
alert(response.d); | |
}, | |
error: function (response) { | |
alert(response.d); | |
} | |
}); | |
} | |
var row; | |
function OnSuccess(response) { | |
var xmlDoc = $.parseXML(response.d); | |
var xml = $(xmlDoc); | |
var customers = xml.find("Customers"); | |
if (row == null) { | |
row = $("[id*=tblCustomers] tr:last-child").clone(true); | |
} | |
$("[id*=tblCustomers] tr").not($("[id*=tblCustomers] tr:first-child")).remove(); | |
if (customers.length > 0) { | |
$.each(customers, function () { | |
var customer = $(this); | |
$("td", row).eq(0).html($(this).find("ContactName").text()); | |
$("td", row).eq(1).html($(this).find("CustomerID").text()); | |
$("td", row).eq(2).html($(this).find("City").text()); | |
$("[id*=tblCustomers]").append(row); | |
row = $("[id*=tblCustomers] tr:last-child").clone(true); | |
}); | |
var pager = xml.find("Pager"); | |
$(".Pager").ASPSnippets_Pager({ | |
ActiveCssClass: "current", | |
PagerCssClass: "pager", | |
PageIndex: parseInt(pager.find("PageIndex").text()), | |
PageSize: parseInt(pager.find("PageSize").text()), | |
RecordCount: parseInt(pager.find("RecordCount").text()) | |
}); | |
$(".ContactName").each(function () { | |
var searchPattern = new RegExp('(' + SearchTerm() + ')', 'ig'); | |
$(this).html($(this).text().replace(searchPattern, "<span class ='highlight'>" + SearchTerm() + "</span>")); | |
}); | |
} else { | |
var empty_row = row.clone(true); | |
$("td:first-child", empty_row).attr("colspan", $("td", row).length); | |
$("td:first-child", empty_row).attr("align", "center"); | |
$("td:first-child", empty_row).html("No records found for the search criteria."); | |
$("td", empty_row).not($("td:first-child", empty_row)).remove(); | |
$("[id*=tblCustomers]").append(empty_row); | |
} | |
}; | |
</script> | |
</div> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment