一个常用的分页类

THX P9!

using System;
   using System.Data;
   using System.Data.SqlClient;
   
   namespace AoYing
   {
    /// <summary>
    /// pagination 的摘要说明。
    ///数据分页类
    /// </summary>
    public class DeRecordSet
    {
    private int iPage;
    private int PageSize;
    private string Table;
    private string Term;
    private string Field;
    private int PageCount;
    private int RecordCount;
    private SqlConnection Conn;
    private string Sql;
    DataTable Dt = new DataTable();
   
    public DeRecordSet()
    {
    iPage = 1;
    PageSize = 10;
    PageCount = 0;
    RecordCount = 0;
    Table = "";
    Term = " 1 = 1 AND ";
    Field = "";
    }
   
    region 初始化
    public string table
    {
    set
    {
    Table = value;
    }
    get
    {
    return Table;
    }
    }
   
    public string term
    {
    set
    {
    Term = value;
    }
    get
    {
    return Term;
    }
    }
   
    public int ipage{
    set{
    iPage = value;
    }
    get{
    return iPage;
    }
    }
    public int pagesize
    {
    set
    {
    PageSize = value;
    }
    get
    {
    return PageSize;
    }
    }
    public string field
    {
    set
    {
    Field = value;
    }
    get
    {
    return Term;
    }
    }
    public int page_count
    {
    get
    {
    return PageCount;
    }
    }
    public int record_count
    {
    get
    {
    return RecordCount;
    }
    }
   
    public SqlConnection conn
    {
    set
    {
    Conn = value;
    }
   
    }
   
    public string sql{
    get{
    return Sql;
    }
    }
   
    endregion
   
    public DataTable GetRecordSet()
    {
    if(Table != "" && Field != "")
    {
    Sql = "SELECT COUNT(*) FROM "+Table+" WHERE "+Term;
    SqlDataAdapter Rs = new SqlDataAdapter(Sql,Conn);
    Dt = new DataTable();
    Rs.Fill(Dt);
    RecordCount=Int32.Parse(Dt.Rows[0][0].ToString());
    if (RecordCount % PageSize == 0)
    {
    PageCount = RecordCount / PageSize;
    }
    else
    {
    PageCount = RecordCount / PageSize + 1 ;
    }
    if(iPage > PageCount){iPage = PageCount;}
   
    if(PageCount > 0)
    {
    if (iPage == 1)
    {
    Sql ="SELECT TOP "+PageSize+" "+Field+" FROM "+Table+" WHERE "+Term+" ORDER BY ID DESC";
    }
    else
    {
    Sql = "SELECT TOP "+PageSize+" "+Field+" FROM "+Table+" WHERE "+Term;
    Sql += " AND ID < (SELECT MIN([ID]) AS [ID] FROM (SELECT TOP "+((iPage-1)*PageSize)+" [ID] FROM "+Table+" WHERE "+Term+" ORDER BY ID DESC ) AS TEMP_TABLE) ORDER BY ID DESC ";
    }
   
    Rs = new SqlDataAdapter(Sql,Conn);
    Dt = new DataTable();
    Rs.Fill(Dt);
    Rs.Dispose();
    Conn.Dispose();
    }
    }
    return Dt;
    }
   
    public void Dispose(){
    Dt.Clear();
    Dt.Dispose();
    }
    }
   }
   
   
   
   /////***************使用参考-
   
   DeRecordSet Rs = new DeRecordSet();
   Rs.conn = conn;
   Rs.table = "News";
   Rs.term = Term;
   Rs.pagesize = 20;
   Rs.field = "ID,Title";
   Rs.ipage = Page;
   NewsList.DataSource = Rs.GetRecordSet();
   NewsList.DataBind();
   
   PageCut.Text = PageList(Page,Rs.page_count,FieldName,FieldValue);

posted on 2004-09-03 15:19  爬行的E.T  阅读(175)  评论(0)    收藏  举报

导航