当前位置:编程学习 > C#/ASP.NET >>

Access怎么样分页啊,高手请帮忙给一个分页通用类

Access怎么样分页啊,高手请帮忙给一个分页通用类 --------------------编程问答-------------------- 去微软网站下载那个分页控件吧~~~虽然效率不好,不过对Access无所谓啦,反正本来效率也不怎么样了~~~就图个方便嘛 --------------------编程问答-------------------- 去微软网站下载那个分页控件吧~~~
syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*)高手也得说说控件的名字吧,那个分页控件叫人怎么找呀? --------------------编程问答--------------------

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Configuration;
using System.Text;

namespace wbh
{
/// <summary>
/// 用于处理数据分页时的一些信息的描述。
/// </summary>
public class OleDBPagerInfo
{
#region 公有函数

/// <summary>
/// 构造函数。
/// </summary>
public OleDBPagerInfo() 
{
this.m_TableName=string.Empty;
this.m_GetFields="*";
this.m_OrderFieldName=string.Empty;
this.m_PageSize=0;
this.m_PageIndex=0;
this.m_IsDesc=false;
this.m_Fliter=string.Empty;
this.m_RecordCount=0;
this.m_PageData=new DataTable();
}

/// <summary>
/// 构造函数。
/// </summary>
/// <param name="TableName">被分页的表名或视图名</param>
/// <param name="GetFields">需要返回的列,默认为*,即所有列</param>
/// <param name="OrderFieldName">排序字段名(默认为空,为空时不做任何排序操作)</param>
/// <param name="PageSize">页尺寸(每页的记录数)</param>
/// <param name="PageIndex">页码(当前在第几个分页)</param>
/// <param name="IsDesc">排序类型(非0则降序)</param>
/// <param name="Fliter">过滤字符串(注意不带Where关键字,默认为空)</param>
public OleDBPagerInfo(string TableName,string GetFields,string OrderFieldName,
 int PageSize,int PageIndex,bool IsDesc,string Fliter)
{
this.m_TableName=TableName;
this.m_GetFields=GetFields;
this.m_OrderFieldName=OrderFieldName;
this.m_PageSize=PageSize;
this.m_PageIndex=PageIndex;
this.m_IsDesc=IsDesc;
this.m_Fliter=Fliter;
this.m_RecordCount=0;
this.m_PageData=new DataTable();
}

/// <summary>
/// 重置描述对象的内部数据。
/// </summary>
public void Reset()
{
this.m_TableName=string.Empty;
this.m_GetFields="*";
this.m_OrderFieldName=string.Empty;
this.m_PageSize=0;
this.m_PageIndex=0;
this.m_IsDesc=false;
this.m_Fliter=string.Empty;
this.m_RecordCount=0;
this.m_PageData=new DataTable();
}

/// <summary>
/// 返回描述信息字符串。
/// </summary>
/// <returns>描述信息字符串。</returns>
public override string ToString()
{
System.Text.StringBuilder sb=new System.Text.StringBuilder();
sb.Append("被分页的表名或视图名:"+this.m_TableName+"<br>");
sb.Append("需要返回的列:"+this.m_GetFields+"<br>");
sb.Append("排序字段名:"+this.m_OrderFieldName+"<br>");
sb.Append("页尺寸(每页的记录数):"+this.m_PageSize+"<br>");
sb.Append("页码(当前在第几个分页):"+this.m_PageIndex+"<br>");

sb.Append("是否降序排序:"+this.m_IsDesc+"<br>");
sb.Append("过滤字符串:"+this.m_Fliter+"<br>");
sb.Append("记录总数:"+this.m_RecordCount+"<br>");
if (this.m_PageData!=null)
{
sb.Append("当前数据表中记录数:"+this.m_PageData.Rows.Count.ToString());
}
return sb.ToString();
}

#endregion

#region 私有成员
private string m_TableName; //被分页的表名或视图名
private string m_GetFields; //需要返回的列,默认为*,即所有列
private string m_OrderFieldName; //排序字段名(默认为空)
private int m_PageSize; //页尺寸(每页的记录数)
private int m_PageIndex; //页码(当前在第几个分页)

private bool m_IsDesc; //排序类型,是否为降序(非0值则降序)
private string m_Fliter; //过滤字符串(注意不带Where关键字,默认为空)
private int m_RecordCount; //当前可以被分页的记录的总数
private DataTable m_PageData; //包含当前分页的数据的数据表
#endregion

#region 属性

/// <summary>
/// 被分页的表名或视图名。
/// </summary>
public string TableName
{
set{ m_TableName=value; }
get{ return m_TableName; }
}

/// <summary>
/// 需要返回的列,默认为*,即所有列。
/// </summary>
public string GetFields
{
set{ m_GetFields=value; }
get{ return m_GetFields; }
}

/// <summary>
/// 排序字段名(默认为空)。
/// </summary>
public string OrderFieldName
{
set{ m_OrderFieldName=value; }
get{ return m_OrderFieldName; }
}

/// <summary>
/// 每个分页的记录数。
/// </summary>
public int PageSize
{
set{ m_PageSize=value; }
get{ return m_PageSize; }
}

/// <summary>
/// 当前的分页页号。
/// </summary>
public int PageIndex
{
set{ m_PageIndex=value; }
get{ return m_PageIndex; }
}


/// <summary>
/// 是否为降序。
/// </summary>
public bool IsDesc
{
set{ m_IsDesc=value; }
get{ return m_IsDesc; }
}

/// <summary>
/// 用户过滤记录的条件字符串。
/// 如果字符串为空则返回所有记录(不过滤)。
/// </summary>
public string Fliter
{
set{ m_Fliter=value; }
get{ return m_Fliter; }
}

/// <summary>
/// 当前可以被分页的记录的总数。
/// </summary>
public int RecordCount
{
set{ m_RecordCount=value; }
get{ return m_RecordCount; }
}

/// <summary>
/// 包含当前分页的数据的数据表。
/// </summary>
public DataTable PageData
{
set { m_PageData=value; }
get { return m_PageData; }
}


#endregion

#region 分页功能

/// <summary>
/// 执行分页操作。
/// 注意此时的分页信息必须足够,否则会抛出异常。
/// </summary>
public void DoPager()
{
if (this.m_TableName==string.Empty)
{
throw new Exception("被分页的表名不能为空。");
}
if (this.m_GetFields==string.Empty)
{
this.m_GetFields="*"; //如果需要被获取的字段为空则取所有字段
}
if (this.m_PageSize<0)
{
return; //如果分页大小小于或等于零则直接退出
}
if (this.m_PageIndex<=0)
{
this.m_PageIndex=1;
}

//查询满足条件的记录总数
string connectionString = bs.DAL.DbHelper.connectionString;
OleDbConnection conn;
OleDbCommand cmd;
conn=new OleDbConnection(connectionString);
if(this.m_Fliter==string.Empty)
{
cmd=new OleDbCommand("select count(*) from "+this.m_TableName,conn);
}
else
{
cmd=new OleDbCommand("select count(*) from "+this.m_TableName+" where "+this.m_Fliter,conn);
}
conn.Open();
this.m_RecordCount=(int)cmd.ExecuteScalar();
conn.Close();

//修正在某页删除所有记录后页面依然停留在该页的问题
if((m_PageIndex-1)*m_PageSize>=m_RecordCount)
{
if(m_RecordCount%m_PageSize==0)
{
m_PageIndex=m_RecordCount/m_PageSize;
}
else
{
m_PageIndex=m_RecordCount/m_PageSize+1;
}
}   

//查询满足条件的当前分页的记录表
if(this.m_RecordCount>0)
{
StringBuilder sb=new StringBuilder();
sb.AppendFormat("select {0} from {1} ",this.m_GetFields,this.m_TableName);
if(this.m_Fliter!=string.Empty)
{
sb.AppendFormat(" where {0} ",this.m_Fliter);
}
if(this.m_OrderFieldName!=string.Empty)
{
if(Equals(this.m_IsDesc, true))
{
sb.AppendFormat(" order by {0} desc",this.m_OrderFieldName);
}
else
{
sb.AppendFormat(" order by {0} asc",this.m_OrderFieldName);
}
}
cmd=new OleDbCommand(sb.ToString(),conn);
OleDbDataAdapter adapter=new OleDbDataAdapter(cmd);
DataSet ds=new DataSet();
adapter.Fill(ds,this.m_PageSize*(this.m_PageIndex-1),this.m_PageSize,"records");
this.m_PageData=ds.Tables["records"];
}
}

#endregion
}
}

补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,