设计界面程序:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table><tr><td align=center>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" AllowSorting="True" Width="497px" Height="260px" OnPageIndexChanged="GridView1_PageIndexChanged" OnPageIndexChanging="GridView1_PageIndexChanging" OnSorting="Sort_Click">
<Columns>
<asp:BoundField DataField="cj0201" HeaderText="ProductID" SortExpression="cj0201" />
<asp:BoundField DataField="cj0202" HeaderText="ProductName" SortExpression="cj0202" />
<asp:BoundField DataField="cj0210" HeaderText="UnitPrice" SortExpression="cj0210" />
</Columns>
<PagerTemplate>
</PagerTemplate>
</asp:GridView>
</td></tr>
<tr><td>
<asp:label id="lblPageCount" Width="136px" BackColor="#deebff" Font-Size="10" Runat="server"></asp:label><asp:label id="lblCurrentIndex" Width="144px" BackColor="#deebff" Font-Size="10" Runat="server"></asp:label>
<asp:linkbutton id="btnFirst" Width="34px" BackColor="#deebff" Font-Size="10" Runat="server" CommandName="First" οnclick="GridView1_PageIndexChanged">首页</asp:linkbutton>
<asp:linkbutton id="btnPrevious" Width="42px" BackColor="#deebff" Font-Size="10" Runat="server"
CommandName="Previous" οnclick="GridView1_PageIndexChanged">上一页</asp:linkbutton>
<asp:linkbutton id="btnNext" runat="Server" Width="50px" BackColor="#deebff" Font-Size="10" CommandName="Next" οnclick="GridView1_PageIndexChanged">下一页</asp:linkbutton>
<asp:linkbutton id="btnEnd" Width="34px" BackColor="#deebff" Font-Size="10" Runat="server" CommandName="End" οnclick="GridView1_PageIndexChanged">尾页</asp:linkbutton>
</td></tr>
</table>
</div>
</form>
</body>
</html>
后台程序:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
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;
public partial class _Default : System.Web.UI.Page
{
public static string ConnectionStr = ConfigurationSettings.AppSettings["Dsn"];
SqlConnection connstr = new SqlConnection(ConnectionStr);
protected void Page_Load(object sender, EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!this.IsPostBack)
{
//判断登陆的权限
//string Gid=Session["GroupId"].ToString().Trim();
//设置排序表达式
ViewState["SortOrder"] = "cj0201";
//设置排序的升降序,将ASC内容保存在ViewState中
ViewState["OrderDire"] = "DESC";
//数据绑定
BindDataGrid();
}
}
public void BindDataGrid()
{
string sql = "select cj0201,cj0202,cj0210 from cj02 ";
SqlDataAdapter sda = new SqlDataAdapter(sql, connstr);
DataSet ds = new DataSet();
sda.Fill(ds,"cj02");
DataView view = ds.Tables["cj02"].DefaultView;
//设置排序关键字,在这里注意冒号的空格,在冒号之间一定要有空格
string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
//设置排序表达式
view.Sort = sort;
GridView1.DataSource = view;
GridView1.DataBind();
// DisplayCurrentPage();
ShowStats();
}
void DisplayCurrentPage()
{
// Calculate the current page number.
int currentPage = GridView1.PageIndex + 1;
}
//显示多少记录和页数
private void ShowStats()
{
//显示当前第几页,因为从0开始计算,所以当前页要加1
lblCurrentIndex.Text="第 " +(GridView1.PageIndex+1).ToString()+"/" +GridView1.PageCount+ " 页";
//显示总页数
//lblPageCount.Text="总共 " +DataGrid1.PageCount.ToString()+" 页";
// lblPageCount.Text="总共 " +DataGrid1.VirtualItemCount.ToString()+" 条记录";
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindDataGrid();
}
private void Page_Click(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
//设置DataGrid当前页的索引值为用户选择的页的索引
GridView1.PageIndex = e.NewPageIndex;
//重新绑定数据
this.BindDataGrid();
//显示分页信息
ShowStats();
}
protected void Sort_Click(object sender, GridViewSortEventArgs e)
{
///取排序的表达式
string sortExp = e.SortExpression.ToString();
//先取当前的状态
if (ViewState["SortOrder"].ToString() == sortExp)
{
//若原来是降序则给为升序,反之亦然
if ((string)ViewState["OrderDire"] == "DESC")
{
ViewState["OrderDire"] = "ASC";
}
else
{
ViewState["OrderDire"] = "DESC";
}
}
else
{
//重新设置排序的关键字
ViewState["SortOrder"] = e.SortExpression;
}
GridView1.PageIndex = 0;
this.BindDataGrid();
}
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
ShowStats();
//direction表示当前的页的位置在什么地方
string direction = ((LinkButton)sender).CommandName.ToString();
switch (direction)
{
//表示向前翻页
case "Previous":
if (GridView1.PageIndex > 0)
{
GridView1.PageIndex -= 1;
}
break;
//表示向后翻页
case "Next":
if (GridView1.PageIndex < (GridView1.PageCount - 1))
{
//设置DataGrid控件的当前索引为下一页面
GridView1.PageIndex += 1;
}
break;
//最后页
case "End":
GridView1.PageIndex = (GridView1.PageCount - 1);
break;
default:
GridView1.PageIndex = 0;
break;
}
BindDataGrid();
ShowStats();
}
}