GridView 实现分页和排序

设计界面程序:

<%@ 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>&nbsp;&nbsp;&nbsp;&nbsp;
      <asp:linkbutton id="btnFirst" Width="34px" BackColor="#deebff" Font-Size="10" Runat="server" CommandName="First" οnclick="GridView1_PageIndexChanged">首页</asp:linkbutton>&nbsp;&nbsp;
      <asp:linkbutton id="btnPrevious" Width="42px" BackColor="#deebff" Font-Size="10" Runat="server"
       CommandName="Previous" οnclick="GridView1_PageIndexChanged">上一页</asp:linkbutton>&nbsp;&nbsp;
      <asp:linkbutton id="btnNext" runat="Server" Width="50px" BackColor="#deebff" Font-Size="10" CommandName="Next" οnclick="GridView1_PageIndexChanged">下一页</asp:linkbutton>&nbsp;&nbsp;
      <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();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值