JQuery DataTables Column Filter plugin on top in Asp.net
(Jquery datatables column Filter in Asp.net) – Chức năng tìm kiếm nhanh giúp người sử dụng tìm kiếm thông tin nhanh chóng, tuy nhiên do chức năng này tìm kiếm tất cả dữ liệu phù hợp với từ khóa đưa vào nên đôi khi kết quả đưa ra quá nhiều. Có nhiều cách để giải quyết vấn đề này như: lựa chọn tiêu chí tìm kiếm hoặc tìm kiếm ngay tại chính tiêu đề của cột dữ liệu. Vậy trong JQuery DataTables có hỗ trợ chức năng cho phép tìm kiếm tại tiêu đề mỗi cột dữ liệu trong danh sách không? Bài viết dưới đây sẽ hướng dẫn các bạn cách đưa thêm chức năng lọc trên tiêu đề cột, giúp người sử dụng lọc, tìm kiếm thông tin một cách nhanh chóng và dễ dàng.
- B1: Download CSDL Northwind tại đây và thực hiện công việc Restore Data.
End Namespace
- B3: Mở file Site.Master dạng HTML và bổ xung đoạn mã phía dưới trong thẻ Head
- B1: Download CSDL Northwind tại đây và thực hiện công việc Restore Data.
- B2: Tạo Project trong Microsoft Visual Studio 2010
Trong Visual Studio tạo 1 Class có tên: Utility và nhập đoạn Code phía dưới cho Class này.
C# Code
using System;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace DataTablesColumnFilterOnTop
{
public class SqlDataProvider
{
#region
"Membres Prives"
private string
_connectionString;
#endregion
#region
"Constructeurs"
public SqlDataProvider()
{
try
{
_connectionString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString;
}
catch
{
}
}
#endregion
#region
"Proprietes"
public string
ConnectionString
{
get { return
_connectionString; }
}
#endregion
#region
"Functions"
public DataTable
FillTable(string sql)
{
try
{
DataTable tb = new DataTable();
SqlDataAdapter adap = new SqlDataAdapter(sql,
_connectionString);
adap.Fill(tb);
return tb;
}
catch
{
return null;
}
}
#endregion
}
}
VB.NET Code
Imports System.Data.SqlClient
Imports System.Data
Namespace DataTablesColumnFilterOnTop
Public Class SqlDataProvider
#Region "Membres
Prives"
Shared _IsError As Boolean = False
Private _connectionString As
String
#End Region
#Region "Constructeurs"
Public Sub New()
Try
_connectionString = ConfigurationManager.ConnectionStrings("SiteSqlServer").ConnectionString
_IsError = False
Catch ex As Exception
_IsError = True
End Try
End Sub
#End Region
#Region "Proprietes"
Public ReadOnly Property ConnectionString() As
String
Get
Return _connectionString
End Get
End Property
#End Region
#Region "Functions"
Public Function
FillTable(ByVal sql As
String) As DataTable
Try
Dim tb As
New DataTable
Dim adap As
New SqlDataAdapter(sql,
_connectionString)
adap.Fill(tb)
Return tb
Catch ex As Exception
Return Nothing
End Try
End Function
#End Region
End Class
<head id="Head1" runat="server">
<title>JQuery DataTables Column Filter plugin on top in
Asp.net</title>
<link href="Styles/Site.css"
rel="stylesheet"
type="text/css"
/>
<link rel="stylesheet"
type="text/css"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"
/>
<link rel="stylesheet"
type="text/css"
href="https://cdn.datatables.net/1.10.9/css/dataTables.bootstrap.min.css"
/>
<script type="text/javascript"
language="javascript"
src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript"
language="javascript"
src="https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js"></script>
<script type="text/javascript"
language="javascript"
src="https://cdn.datatables.net/1.10.9/js/dataTables.bootstrap.min.js"></script>
<script type="text/javascript"
language="javascript"
src="Js/demo.js"></script>
<asp:ContentPlaceHolder
ID="HeadContent"
runat="server">
</asp:ContentPlaceHolder>
</head>
- B4: Mở file Default.aspx dưới dạng HTML và nhập mã HTML
<%@ Page
Title="JQuery
DataTables Column Filter plugin on top in Asp.net" Language="C#"
MasterPageFile="~/Site.master"
AutoEventWireup="true"
CodeBehind="Default.aspx.cs"
Inherits="DataTablesColumnFilterOnTop._Default"
%>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:ScriptManager ID="ScriptManager1"
runat="server">
</asp:ScriptManager>
<div class="panel
panel-default">
<div class="panel-heading">
<h3>JQuery DataTables Column Filter plugin on top in
Asp.net</h3>
</div>
<div class="panel-body">
<asp:Repeater ID="dlObject"
runat="server">
<HeaderTemplate>
<table
id="tblData"
class="table
table-striped table-bordered" cellpadding="0" cellspacing="0" width="100%">
<thead>
<tr>
<th align="center">ProductName</th>
<th align="center">QuantityPerUnit</th>
<th align="center">UnitPrice</th>
<th align="center">UnitsInStock</th>
<th align="center">UnitsOnOrder</th>
</tr>
<tr id="filterrow">
<th>ProductName</th>
<th>QuantityPerUnit</th>
<th>UnitPrice</th>
<th>UnitsInStock</th>
<th>UnitsOnOrder</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="left"><%# Eval("ProductName")
%></td>
<td align="left"><%# Eval("QuantityPerUnit")
%></td>
<td align="right"><%# Eval("UnitPrice")
%></td>
<td align="right"><%# Eval("UnitsInStock")
%></td>
<td align="right"><%# Eval("UnitsOnOrder")
%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody><tfoot>
</tfoot>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</div>
<script type="text/javascript">
function pageLoad() {
$('#tblData thead tr#filterrow th').each(function () {
var title = $('#tblData
thead th').eq($(this).index()).text();
$(this).html('<input
style="width:100%" class="form-control"
type="text" onclick="stopPropagation(event);"
placeholder="Search ' + title + '"
/>');
});
// Apply the filter
$("#tblData thead input").on('keyup change', function
() {
table
.column($(this).parent().index() + ':visible')
.search(this.value)
.draw();
});
// DataTable
var table = $('#tblData').DataTable({
orderCellsTop: true
});
function stopPropagation(evt) {
if (evt.stopPropagation !== undefined) {
evt.stopPropagation();
} else {
evt.cancelBubble = true;
}
}
};
</script>
</asp:Content>
- B5: Viết Code cho file Default.aspx
C# Code
//Visit http://www.laptrinhdotnet.com
for more ASP.NET Tutorials
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Web.UI;
using System.Web.Caching;
namespace DataTablesColumnFilterOnTop
{
public partial class _Default :
System.Web.UI.Page
{
#region
"Bind Data"
private void
BindData()
{
DataTable objBind = new
DataTable();
objBind = GetData();
dlObject.DataSource = objBind;
dlObject.DataBind();
}
private DataTable
GetData()
{
SqlDataProvider objSQL = new
SqlDataProvider();
DataTable objBind = null;
//Caching
if (Cache["Cache_Products"]
== null)
{
objBind = objSQL.FillTable("Select *
from Products");
Cache["Cache_Products"] =
objBind;
}
else
{
objBind = (DataTable)Cache["Cache_Products"];
}
return objBind;
}
#endregion
#region
"Event Handles"
protected void
Page_Load(object sender, System.EventArgs e)
{
try
{
if (!IsPostBack)
{
BindData();
}
}
catch
{
}
}
#endregion
}
}
VB.NET Code
'Visit http://www.laptrinhdotnet.com
for more ASP.NET Tutorials
Namespace DataTablesColumnFilterOnTop
Public Class _Default
Inherits System.Web.UI.Page
#Region "Bind Data"
Private Sub
BindData()
Dim objBind As New DataTable
objBind = GetData()
dlObject.DataSource = objBind
dlObject.DataBind()
End Sub
Private Function
GetData() As DataTable
Dim objSQL As New SqlDataProvider
Dim objBind As DataTable
'Caching
If Cache("Cache_Products")
Is Nothing Then
objBind = objSQL.FillTable("select *
from Products")
Cache("Cache_Customers") =
objBind
Else
objBind = CType(Cache("Cache_Products"), DataTable)
End If
Return objBind
End Function
#End Region
#Region "Event
Handles"
Protected Sub
Page_Load(ByVal sender As
Object, ByVal e
As System.EventArgs)
Handles Me.Load
Try
If Page.IsPostBack = False Then
BindData()
End If
Catch ex As Exception
End Try
End Sub
#End Region
End Class
Chúc các bạn thành công!
Quang Bình
No Comment to " JQuery DataTables Column Filter plugin on top in Asp.net "