oracle分页
根据条件查询指定页数据,而非全部数据
/// <summary>
/// 根据条件分页查询结果
/// </summary>
/// <param name="sqlwhere">查询条件</param>
/// <param name="page">第几页</param>
/// <param name="pagesize">每页个数</param>
/// <returns>结果集</returns>
public static DataSet GetDataSetBySqlWhere(string sqlwhere, int page, int pagesize, string tablename)
{
string strSql = "SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM " + tablename;
if (sqlwhere != "")
strSql += " where " + sqlwhere;
strSql += ") A WHERE ROWNUM <= " + pagesize * page + " )WHERE RN >= " + ((page - 1) * pagesize + 1);
return DbHelperOra.Query(strSql.ToString());
}
/// <summary>
/// 根据条件查询总个数(需要告诉aspnetpage总共多少页)
/// </summary>
/// <param name="sqlwhere">条件</param>
/// <returns>总个数</returns>
public static int GetCountBySqlWhere(string sqlwhere, string tablename)
{
string strSql = "select count(*) from " + tablename;
if (sqlwhere != "")
strSql += " where " + sqlwhere;
object obj = DbHelperOra.GetSingle(strSql);
if (obj != null)
return Convert.ToInt32(obj);
else
return 0;
}
页面绑定部分:
1.将数据绑定到repeater.
(1) int count = GetCountBySqlWhere();//获取全部页数为了能使aspnetpage能够自动产生页数样式
如图:

(2)DataSet list = new DataSet();
list = GetDataSetBySqlWhere();//获取指定页的数据
(3)this.Aspnetpage.CurrentPageIndex = page;
this.Aspnetpage.PageSize = pagesize;
this.Aspnetpage.RecordCount = count;
(4)this.Repeater.DataSource = list;
this.Repeater..DataBind();
2.就是aspnetpage的分页
Aspnetpage_PageChanging 事件,
让后通过 int page = e.NewPageIndex;//获取选中的页数
然后查询,就达到分页效果