javascript:jQuery tablesorter 2.0

https://mottie.github.io/tablesorter/docs/index.html

1.GridView

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebPaingDemo.WebForm3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Sorting ASP.NET GridView Control using JQuery Tablesorter Plugin</title>
   <script src="script/jquery-1.9.0.js" type="text/javascript"></script>
<script src="script/jquery.tablesorter.min.js" type="text/javascript"></script> 
   <style type="text/css">
th
{
cursor:pointer;
background-image: url(images/ice-unsorted.gif);
background-position: right center;
background-repeat:no-repeat;
color:Black;
font-weight:bold;
text-align:left;
}
th.headerSortUp
{ 
background-image: url(images/ice-asc.gif);
background-position: right center;
background-repeat:no-repeat;
}
th.headerSortDown
{ 
background-image: url(images/ice-desc.gif); 
background-position: right center;
background-repeat:no-repeat;
}
td
{
border-bottom: solid 1px #dadada; 
}
</style>
 <script type="text/javascript">
$(document).ready(function() {
$("#GridView1").tablesorter();
});
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333"
GridLines="Horizontal" Font-Size="9pt" Font-Names="Arial"
AutoGenerateColumns="False" BorderColor="#dadada"
BorderStyle="Solid" BorderWidth="1px">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"
ItemStyle-Width="40" />
<asp:BoundField DataField="Name" HeaderText="Name"
ItemStyle-Width="80" />
<asp:BoundField DataField="Fee" DataFormatString="{0:n0}" HeaderText="Fee"
ItemStyle-Width="60" />
<asp:BoundField DataField="Price" DataFormatString="{0:c}"
HeaderText="Price" ItemStyle-Width="60" />
<asp:BoundField DataField="Discount" DataFormatString="{0:p1}"
HeaderText="Discount" ItemStyle-Width="70" />
<asp:BoundField DataField="Difference" DataFormatString="{0:n1}"
HeaderText="Difference" ItemStyle-Width="80" />
<asp:BoundField DataField="Date" DataFormatString="{0:MMM dd, yyyy}"
HeaderText="Date" ItemStyle-Width="100" />
<asp:BoundField DataField="OnSale" HeaderText="OnSale"
ItemStyle-Width="60" />
</Columns>
</asp:GridView>
    </div>
    </form>
</body>
</html>

  

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace WebPaingDemo
{


    /// <summary>
    /// 
    /// </summary>
    public partial class WebForm3 : System.Web.UI.Page
    {

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                BindData();
            }
        }
        /// <summary>
        /// 
        /// </summary>
        private void BindData()
        {
            int[] ids = { 12, 13, 14, 15, 16 };
            string[] names = { "Alice", "James", "Peter", "Simon", "David" };
            int[] fee = { 2299, 5123, 7564, 9595, 1600 };
            decimal[] prices = { 12.99m, 122.23m, 25.64m, 66.85m, 1.60m };
            decimal[] discounts = { 0.2m, 0.194m, 0.4564m, 0.209m, 0.310m };
            decimal[] differences = { -12m, 19.4m, -45.64m, 200.9m, 41.60m };
            string[] dates = { "04-12-2010", "07-23-2010", "07-14-2009", "12-12-2010", "11-03-2019" };
            bool[] onSale = { true, false, true, true, false };
            DataTable table = new DataTable();
            table.Columns.Add("ID", typeof(System.Int32));
            table.Columns.Add("Name", typeof(System.String));
            table.Columns.Add("Fee", typeof(System.Decimal));
            table.Columns.Add("Price", typeof(System.Decimal));
            table.Columns.Add("Discount", typeof(System.Decimal));
            table.Columns.Add("Difference", typeof(System.Int32));
            table.Columns.Add("Date", typeof(System.DateTime));
            table.Columns.Add("OnSale", typeof(System.Boolean));
            for (int i = 0; i < 5; i++)
            {
                DataRow row = table.NewRow();
                row["ID"] = ids[i];
                row["Name"] = names[i];
                row["Fee"] = fee[i];
                row["Price"] = prices[i];
                row["Discount"] = discounts[i];
                row["Difference"] = differences[i];
                row["Date"] = DateTime.Parse(dates[i]);
                row["OnSale"] = onSale[i];
                table.Rows.Add(row);
            }
            GridView1.DataSource = table;
            GridView1.DataBind();
            GridView1.UseAccessibleHeader = true;
            GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
        }


    }
}

  2.Repeater

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" Inherits="WebPaingDemo.WebForm4" %>

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>jQuery tablesorter 2.0 - Pager plugin</title>

	<!-- jQuery -->
   <script src="script/jquery-1.9.0.js" type="text/javascript"></script>

	<!-- Demo stuff -->
	<link rel="stylesheet" href="css/jq.css">
	<link href="css/prettify.css" rel="stylesheet">
	<script src="js/prettify.js"></script>
	<script src="js/docs.js"></script>

	<!-- Tablesorter: required -->
	<link rel="stylesheet" href="css/theme.blue.css">
	<script src="js/jquery.tablesorter.js"></script>
	<script src="js/jquery.tablesorter.widgets.js"></script>

	<!-- Tablesorter: optional -->
	<link rel="stylesheet" href="js/pager/jquery.tablesorter.pager.css">
	<script src="js/pager/jquery.tablesorter.pager.js"></script>

	<script id="js">$(function(){

	// **********************************
	//  Description of ALL pager options
	// **********************************
	var pagerOptions = {

		// target the pager markup - see the HTML block below
		container: $(".pager"),

		// use this url format "http:/mydatabase.com?page={page}&size={size}&{sortList:col}"
		ajaxUrl: null,

		// modify the url after all processing has been applied
		customAjaxUrl: function(table, url) { return url; },

		// ajax error callback from $.tablesorter.showError function
		// ajaxError: function( config, xhr, settings, exception ){ return exception; };
		// returning false will abort the error message
		ajaxError: null,

		// add more ajax settings here
		// see http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
		ajaxObject: { dataType: 'json' },

		// process ajax so that the data object is returned along with the total number of rows
		ajaxProcessing: null,

		// Set this option to false if your table data is preloaded into the table, but you are still using ajax
		processAjaxOnInit: true,

		// output string - default is '{page}/{totalPages}'
		// possible variables: {size}, {page}, {totalPages}, {filteredPages}, {startRow}, {endRow}, {filteredRows} and {totalRows}
		// also {page:input} & {startRow:input} will add a modifiable input in place of the value
		// In v2.27.7, this can be set as a function
		// output: function(table, pager) { return 'page ' + pager.startRow + ' - ' + pager.endRow; }
		output: '{startRow:input} – {endRow} / {totalRows} rows',

		// apply disabled classname (cssDisabled option) to the pager arrows when the rows
		// are at either extreme is visible; default is true
		updateArrows: true,

		// starting page of the pager (zero based index)
		page: 0,

		// Number of visible rows - default is 10
		size: 10,

		// Save pager page & size if the storage script is loaded (requires $.tablesorter.storage in jquery.tablesorter.widgets.js)
		savePages : true,

		// Saves tablesorter paging to custom key if defined.
		// Key parameter name used by the $.tablesorter.storage function.
		// Useful if you have multiple tables defined
		storageKey:'tablesorter-pager',

		// Reset pager to this page after filtering; set to desired page number (zero-based index),
		// or false to not change page at filter start
		pageReset: 0,

		// if true, the table will remain the same height no matter how many records are displayed. The space is made up by an empty
		// table row set to a height to compensate; default is false
		fixedHeight: true,

		// remove rows from the table to speed up the sort of large tables.
		// setting this to false, only hides the non-visible rows; needed if you plan to add/remove rows with the pager enabled.
		removeRows: false,

		// If true, child rows will be counted towards the pager set size
		countChildRows: false,

		// css class names of pager arrows
		cssNext: '.next', // next page arrow
		cssPrev: '.prev', // previous page arrow
		cssFirst: '.first', // go to first page arrow
		cssLast: '.last', // go to last page arrow
		cssGoto: '.gotoPage', // select dropdown to allow choosing a page

		cssPageDisplay: '.pagedisplay', // location of where the "output" is displayed
		cssPageSize: '.pagesize', // page size selector - select dropdown that sets the "size" option

		// class added to arrows when at the extremes (i.e. prev/first arrows are "disabled" when on the first page)
		cssDisabled: 'disabled', // Note there is no period "." in front of this class name
		cssErrorRow: 'tablesorter-errorRow' // ajax error information row

	};

	$("table")

		// Initialize tablesorter
		// ***********************
		.tablesorter({
			theme: 'blue',
			widthFixed: true,
			widgets: ['zebra', 'filter']
		})

		// bind to pager events
		// *********************
		.bind('pagerChange pagerComplete pagerInitialized pageMoved', function(e, c){
			var msg = '"</span> event triggered, ' + (e.type === 'pagerChange' ? 'going to' : 'now on') +
				' page <span class="typ">' + (c.page + 1) + '/' + c.totalPages + '</span>';
			$('#display')
				.append('<li><span class="str">"' + e.type + msg + '</li>')
				.find('li:first').remove();
		})

		// initialize the pager plugin
		// ****************************
		.tablesorterPager(pagerOptions);

		// Add two new rows using the "addRows" method
		// the "update" method doesn't work here because not all rows are
		// present in the table when the pager is applied ("removeRows" is false)
		// ***********************************************************************
		var r, $row, num = 50,
			row = '<tr><td>Student{i}</td><td>{m}</td><td>{g}</td><td>{r}</td><td>{r}</td><td>{r}</td><td>{r}</td><td><button type="button" class="remove" title="Remove this row">X</button></td></tr>' +
				'<tr><td>Student{j}</td><td>{m}</td><td>{g}</td><td>{r}</td><td>{r}</td><td>{r}</td><td>{r}</td><td><button type="button" class="remove" title="Remove this row">X</button></td></tr>';
		$('button:contains(Add)').click(function(){
			// add two rows of random data!
			r = row.replace(/{[gijmr]}/g, function(m){
				return {
					'{i}' : num + 1,
					'{j}' : num + 2,
					'{r}' : Math.round(Math.random() * 100),
					'{g}' : Math.random() > 0.5 ? 'male' : 'female',
					'{m}' : Math.random() > 0.5 ? 'Mathematics' : 'Languages'
				}[m];
			});
			num = num + 2;
			$row = $(r);
			$('table')
				.find('tbody').append($row)
				.trigger('addRows', [$row]);
			return false;
		});

		// Delete a row
		// *************
		$('table').delegate('button.remove', 'click' ,function(){
			var t = $('table');
			// disabling the pager will restore all table rows
			// t.trigger('disablePager');
			// remove chosen row
			$(this).closest('tr').remove();
			// restore pager
			// t.trigger('enablePager');
			t.trigger('update');
			return false;
		});

		// Destroy pager / Restore pager
		// **************
		$('button:contains(Destroy)').click(function(){
			// Exterminate, annhilate, destroy! http://www.youtube.com/watch?v=LOqn8FxuyFs
			var $t = $(this);
			if (/Destroy/.test( $t.text() )){
				$('table').trigger('destroyPager');
				$t.text('Restore Pager');
			} else {
				$('table').tablesorterPager(pagerOptions);
				$t.text('Destroy Pager');
			}
			return false;
		});

		// Disable / Enable
		// **************
		$('.toggle').click(function(){
			var mode = /Disable/.test( $(this).text() );
			$('table').trigger( (mode ? 'disable' : 'enable') + 'Pager');
			$(this).text( (mode ? 'Enable' : 'Disable') + 'Pager');
			return false;
		});
		$('table').bind('pagerChange', function(){
			// pager automatically enables when table is sorted.
			$('.toggle').text('Disable Pager');
		});

		// clear storage (page & size)
		$('.clear-pager-data').click(function(){
			// clears user set page & size from local storage, so on page
			// reload the page & size resets to the original settings
			$.tablesorter.storage( $('table'), 'tablesorter-pager', '' );
		});

		// go to page 1 showing 10 rows
		$('.goto').click(function(){
			// triggering "pageAndSize" without parameters will reset the
			// pager to page 1 and the original set size (10 by default)
			// $('table').trigger('pageAndSize')
			$('table').trigger('pageAndSize', [1, 10]);
		});

});</script>
	<script>
	$(function(){
		$('.clear').click(function(){
			$('#display').html( new Array(6).join('<li> </li>') );
		});
	});
	</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div class="pager">
		<img src="js/pager/icons/first.png" class="first" alt="First" />
		<img src="js/pager/icons/prev.png" class="prev" alt="Prev" />
		<!-- the "pagedisplay" can be any element, including an input -->
		<span class="pagedisplay" data-pager-output-filtered="{startRow:input} – {endRow} / {filteredRows} of {totalRows} total rows"></span>
		<img src="js/pager/icons/next.png" class="next" alt="Next" />
		<img src="js/pager/icons/last.png" class="last" alt="Last" />
		<select class="pagesize" title="Select page size">
			<option value="10">10</option>
			<option value="20">20</option>
			<option value="30">30</option>
			<option value="all">All Rows</option>
		</select>
		<select class="gotoPage" title="Select page number"></select>
	</div>

<table class="tablesorter">
	<thead>
		<tr>
			<th>Name</th>
			<th>Major</th>
			<th>Sex</th>
			<th>English</th>
			<th>Japanese</th>
			<th>Calculus</th>
			<th>Geometry</th>
			<th class="remove sorter-false"></th>
		</tr>
	</thead>
	<tfoot>
		<tr>
			<th>Name</th>
			<th>Major</th>
			<th>Sex</th>
			<th>English</th>
			<th>Japanese</th>
			<th>Calculus</th>
			<th>Geometry</th>
			<th></th>
		</tr>
	</tfoot>
	<tbody>
        <asp:Repeater ID="Repeater1" runat="server">
         <ItemTemplate>
        <tr onmouseover="CurrentColor=this.style.backgroundColor; this.style.backgroundColor='#FFE9CC';" onmouseout="this.style.backgroundColor=CurrentColor;">
        <td><%#Eval("Name").ToString()%> </td>
        <td><%#Eval("Major").ToString()%> </td>
       <td><%#Eval("Sex").ToString()%> </td>
       <td><%#Eval("English").ToString()%> </td>
       <td><%#Eval("Japanese").ToString()%> </td>
       <td><%#Eval("Calculus").ToString()%> </td>
       <td><%#Eval("Geometry").ToString()%> </td>
       <td><a  href="default.aspx?id=<%#Eval("ID" ).ToString() %>" >edit</a> </td> 
        </tr>        
         </ItemTemplate>
        </asp:Repeater>
	</tbody>
</table>

<div class="pager">
	<img src="js/pager/icons/first.png" class="first" alt="First" />
	<img src="js/pager/icons/prev.png" class="prev" alt="Prev" />
	<!-- the "pagedisplay" can be any element, including an input -->
	<span class="pagedisplay" data-pager-output-filtered="{startRow:input} – {endRow} / {filteredRows} of {totalRows} total rows"></span>
	<img src="js/pager/icons/next.png" class="next" alt="Next" />
	<img src="js/pager/icons/last.png" class="last" alt="Last" />
	<select class="pagesize" title="Select page size">
		<option value="10">10</option>
		<option value="20">20</option>
		<option value="30">30</option>
		<option value="all">All Rows</option>
	</select>
	<select class="gotoPage" title="Select page number"></select>
</div>
    </div>
    </form>
</body>
</html>

  

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;




namespace WebPaingDemo
{


    /// <summary>
    /// 
    /// </summary>
    public partial class WebForm4 : System.Web.UI.Page
    {

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.Repeater1.DataSource = bindata();            
                this.Repeater1.DataBind();
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        private DataTable bindata()
        {
            int iResult;
            Random ro = new Random();

            DataTable dt = new DataTable();
            dt.Columns.Add("ID", typeof(int));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Major", typeof(string));
            dt.Columns.Add("Sex", typeof(string));
            dt.Columns.Add("English", typeof(int));
            dt.Columns.Add("Japanese", typeof(int));
            dt.Columns.Add("Calculus", typeof(int));
            dt.Columns.Add("Geometry", typeof(int));

            for (int i = 0; i < 500; i++)
            {
                DataRow row = dt.NewRow();
                row["ID"] = i;
                row["Name"] ="Student"+ i.ToString();
                row["Major"] = "Languages" + i.ToString(); ;
                if (i % 2 == 0)
                {
                    row["Sex"] = "female";
                }
                else
                {
                    row["Sex"] = "male";
                }
                iResult = ro.Next();
                row["English"] = iResult;
                iResult = ro.Next();
                row["Japanese"] = iResult;
                iResult = ro.Next();
                row["Calculus"] = iResult;
                iResult = ro.Next();
                row["Geometry"] = iResult;
               dt.Rows.Add(row);
            }
            


            return dt;

        }

    }
}

  

原文地址:https://www.cnblogs.com/geovindu/p/7879234.html