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;//获取选中的页数

           然后查询,就达到分页效果