datareader显示很快的分页程序实例_[Asp.Net教程]                                           1.用DataReader分页  (
显示很快)    /// 
 
        /// PageList for DataReader 
        ///          /// 
         /// 
         /// 
         /// 
         /// 
         /// 
         /// 
         /// 
         public DataTable PageListReader(string connectionString, string sql, int pageSize, int curPage, out int pageCount, out int count, params DbParameter[] cmdParms) 
        { 
            int first = 0; 
            int last = 0; 
            int fieldCount = 0; 
            using (SqlConnection conn = new SqlConnection(connectionString)) 
            { 
                SqlCommand cmd = conn.CreateCommand(); 
                PRepareCommand(cmd, conn, null, CommandType.Text, sql, cmdParms); 
                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
                DataTable dt = new DataTable(); 
                fieldCount = reader.FieldCount; 
                for (int i = 0; i < fieldCount; i++) 
                { 
                    DataColumn col = new DataColumn(); 
                    col.ColumnName = reader.GetName(i); 
                    col.DataType = reader.GetFieldType(i); 
                    dt.Columns.Add(col); 
                } 
                count = 0; 
                first = (curPage - 1) * pageSize+1; 
                last = curPage * pageSize; 
                while (reader.Read()) 
                { 
                    count++; 
                    if (count >= first && last >= count) 
                    { 
                        DataRow r = dt.NewRow(); 
                        for (int i = 0; i < fieldCount; i++) 
                        { 
                            r[i] = reader[i]; 
                        } 
                        dt.Rows.Add(r); 
                    } 
                } 
                reader.Close(); 
                pageCount = Convert.ToInt32(Math.Ceiling((double)count / (double)pageSize)); 
                return dt; 
            } 
        }   
2.用ROW_NUMBER()分页 
    /// 
 
        /// 分页获取数据(Sql Server 2005) for ROW_NUMBER() 
        ///          /// 
数据库链接 
        /// 
获取数据集的Sql 
        /// 
排序字段,可以多个 
        /// 
每页显示多少条 
        /// 
当前页码 
        /// 
总页数 
        /// 
总记录数 
        ///
DbParameter 
        /// 
DataTable         public DataTable PageList(string connectionString, string sql, string fldSort, int pageSize, int curPage, out int pageCount, out int count, params DbParameter[] cmdParms) 
        { 
            StringBuilder strSql = new StringBuilder(); 
            strSql.AppendFormat(@"SELECT count(0) from {0} as MyTableCount; 
                                    select * from ( 
                                    SELECT ROW_NUMBER() OVER(order by {1}) RowNumber,*  
                                    from {0} mytable 
                                    ) mytable2 
                                    where RowNumber between {2} and {3}" 
                               , sql, fldSort, Convert.ToString((curPage - 1) * pageSize + 1), Convert.ToString((curPage * pageSize))); 
            DataSet ds = ExecuteQuery(connectionString, CommandType.Text, strSql.ToString(), cmdParms); 
            count = Convert.ToInt32(ds.Tables[0].Rows[0][0]); 
            pageCount = Convert.ToInt32(Math.Ceiling((double)count / (double)pageSize)); 
            return ds.Tables[1]; 
        } 
来源:http://www.shilicn.com http://www.dzdq8.com