设为首页 加入收藏

TOP

ASP.NET分页存储过程及调用(一)
2015-07-24 10:44:17 来源: 作者: 【 】 浏览:2
Tags:ASP.NET 存储 过程 调用

废话不多说,只说代码,及过程

?

1.创建存储过程

?

create procedure [dbo].[sp_PagingTabs]
@TableName nvarchar(200),				/* 表名 */
@FieldName nvarchar(500),				/* 要查询的字段 */
@where nvarchar(500),					/* 查询的条件 */
@OrderField nvarchar(500),				/* 排序指定的字段 */
@Order nvarchar(50),					/* 排序 只能是 asc desc */
@PageIdORField nvarchar(50),			/* 指定字段来分页 */
@PageSize int ,							/* 每页个数 */
@PageIndex int 							/* 当前页码 */ 

as
begin
 
    /* 先清除字符串左右的空格 */ 
    set @TableName = LTRIM(rtrim(@TableName));
    set @FieldName = LTRIM(RTRIM(@FieldName));
    set @where = LTRIM(RTRIM(@where));
    set @Order = LTRIM(RTRIM(@Order));
    set @OrderField=LTRIM(RTRIM(@OrderField));
    set @PageIdORField =LTRIM(rtrim(@PageIdORField));
    
	/* 然后对非空传值进行判断 */
	if ISNULL(@TableName,'')='' return ;
	if ISNULL(@FieldName,'')='' set @FieldName='*'; 
	if ISNULL(@Order,'')='' set @Order = 'desc'; 
	 
	/* 查询分页的数据 */
    declare @sql nvarchar(1000) 
	set @sql=' select top ' + cast(@PageSize as nvarchar(50)) + ' ' + @FieldName + ' from ' + @TableName + ' where 1=1' + @where 
	+ ' and ' + @PageIdORField + ' not in(select top ' + cast((@PageSize * (@PageIndex-1)) as nvarchar(50)) + @PageIdORField + ' from ' + @TableName + '  where 1=1 '+
	@where + ' order by ' + @OrderField + ' ' + @Order+') order by ' + @OrderField  + ' ' + @Order;
	
	/* 总页数  */
	set @sql+='  select count(*) from  ' + @TableName + ' where 1=1 ' + @where 
    
    exec(@sql)
end

?

2.创建方法类

?

        /// 
        /// 分页存储过程
        /// 
        /// 表名
        /// 字段名
        /// where条件
        /// 只能是desc or asc
        /// 每页条数
        /// 当前页码
        /// 总页码
        /// 指定字段来分页
        /// 排序指定的字段
        public static DataSet LinkProce(string TableName, string FieldName, string wheres, string order,string PageIdORField,string OrderField, ref int PageSize,ref int PageIndex)
        {
            using (SqlConnection conn = new SqlConnection(Conn.ConnString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "sp_PagingTabs";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@TableName", (TableName.Trim() == "User" ? "[User]" : TableName));
                    cmd.Parameters.AddWithValue("@FieldName", FieldName);
                    cmd.Parameters.AddWithValue("@where", wheres);
                    cmd.Parameters.AddWithValue("@Order", order);
                    cmd.Parameters.AddWithValue("@OrderField", OrderField);
                    cmd.Parameters.AddWithValue("@PageIdORField", PageIdORField);
                    cmd.Parameters.AddWithValue("@PageSize", PageSize);
                    cmd.Parameters.AddWithValue("@PageIndex", PageIndex);

                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    DataSet ds = new DataSet();
                    try
                    {
                        da.Fill(ds);
                        return ds;
                    }
                    catch
                    {
                        return null;
                    }
                    finally
                    {
                        ds.Dispose();
                        conn.Close();
                    }
                }
            }
        }

?

3.调用方法

?

 public DataSet LinkServer(string TableName, string FieldName, string wheres, string order,string PageIdORField,string OrderField, ref int PageSize, ref int PageIndex)
        {
            return SQLHelperMe.LinkProce(TableName, FieldName, wheres, order, PageIdORField, OrderField,ref PageSize,ref PageIndex);
        }

?

4.正式使用

?

namespace Web.WebForm1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        private int PageIndex = 0;
        public DataTable list;
        public string DivPager = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            GetParams();
            showData();
        }
        private void GetParams()
        {
            if (!String.IsNullOrEmpty(Request["page"]))
            {
                PageIndex
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Bulk Insert出现拒绝访问的问题解.. 下一篇商品分类筛选条件建模数据表的设计

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)
·深入浅出 C++ Lambda (2025-12-26 05:49:40)
·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)