这个是我从网上找的sql2005的数据分页的存储过程set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create PROCEDURE [dataPage]
(
 @TableName varchar(50),            --表名
 @ReFieldsStr varchar(200) = '*',   --字段名(全部字段为*)
 @OrderString varchar(200),         --排序字段(必须!支持多字段不用加order by)
 @WhereString varchar(500) =N'',  --条件语句(不用加where)
 @PageSize int,                     --每页多少条记录
 @PageIndex int = 1 ,               --指定当前为第几页
 @TotalRecord int output            --返回总记录数
)
AS
 
BEGIN        --处理开始点和结束点
    Declare @StartRecord int;
    Declare @EndRecord int; 
    Declare @TotalCountSql nvarchar(500); 
    Declare @SqlString nvarchar(2000);    
    set @StartRecord = (@PageIndex-1)*@PageSize + 1
    set @EndRecord = @StartRecord + @PageSize - 1 
    SET @TotalCountSql= N'select @TotalRecord = count(*) from ' + @TableName;--总记录数语句
    SET @SqlString = N'(select row_number() over (order by '+ @OrderString +') as rowId,'+@ReFieldsStr+' from '+ @TableName;--查询语句
    --
    IF (@WhereString! = '' or @WhereString!=null)
        BEGIN
            SET @TotalCountSql=@TotalCountSql + '  where '+ @WhereString;
            SET @SqlString =@SqlString+ '  where '+ @WhereString;            
        END
    --第一次执行得到
    --IF(@TotalRecord is null)
    --   BEGIN
           EXEC sp_executesql @totalCountSql,N'@TotalRecord int out',@TotalRecord output;--返回总记录数
    --  END
    ----执行主语句
    set @SqlString ='select * from ' + @SqlString + ') as t where rowId between ' + ltrim(str(@StartRecord)) + ' and ' +  ltrim(str(@EndRecord));
    Exec(@SqlString)    
END
    
asp.net页面$(function(){
         var p=$("aPage").attr("rel");//a连接页数
$.ajax({ 
url:"action/admin.ashx",
type:"get",
data:"ac=page&page="+p,
success:function(str){
alert(str);//这里将返回字符串并填充到html中div中  //这里先弹出
}
});
});admin.ashx页面public HttpContext hc;
if (!string.IsNullOrEmpty(hc.Request.QueryString["ac"]))
{
    string p=hc.Request.QueryString["ac"].ToString();
    public void ccgcPage() 
    {     
       //这里怎么调用存储过程,并根据我传递p的值返回相对的数据???
    }
}本人对存储过程不是很了解,求代码……,

解决方案 »

  1.   

    仔细看看http://blog.sina.com.cn/s/blog_597d0c380100bwry.html
      

  2.   

    这个和你的一样http://shuoshuo.blog.51cto.com/3417144/753817
      

  3.   

             /// <summary>
            /// 分页获取数据列表
            /// </summary>
            public DataSet GetList(int PageSize,int PageIndex,string strWhere)
            {
                SqlParameter[] parameters = {
                        new SqlParameter("@tblName", SqlDbType.VarChar, 255),
                        new SqlParameter("@fldName", SqlDbType.VarChar, 255),
                        new SqlParameter("@PageSize", SqlDbType.Int),
                        new SqlParameter("@PageIndex", SqlDbType.Int),
                        new SqlParameter("@IsReCount", SqlDbType.Bit),
                        new SqlParameter("@OrderType", SqlDbType.Bit),
                        new SqlParameter("@strWhere", SqlDbType.VarChar,1000),
                        };
                parameters[0].Value = "表名";
                parameters[1].Value = "TeamBuyId";//排序字段
                parameters[2].Value = PageSize;
                parameters[3].Value = PageIndex;
                parameters[4].Value = 0;
                parameters[5].Value = 0;
                parameters[6].Value = strWhere;
                return DbHelperSQL.RunProcedure("存储过程名",parameters,"ds");
    }
    按这个方式用
      

  4.   


    找一个 DBHelper  然后 给一个 调用的例子  具体的 调用 需要看你DBHelper        public DataTable QueryServicesInfoBySid(string Ssid)
            {
                try
                {
                    string Query = "Query_SapplicationInfo";
                    SqlParameter[] Parms = {
                                            new SqlParameter("@sid",Ssid)
                                       };
                    db.AddParameter(Parms);
                    return db.ExecuteDataSet(Query, CommandType.StoredProcedure, connState).Tables[0];            }
                catch (Exception)
                {                throw;
                }
            }
      

  5.   

    分页的逻辑,比如第3页,每页12条数据,就取第前3*12条数据,倒序后取top 12,然后再正常顺序排一下。
    你按这个思路去仔细研究一下!