使用 AspNet第三方控件分页

  1.SQL中的分页存诸过程

CREATE  PROCEDURE  GetDataByPager2
(
@startIndex INT,--起始记录数,从0开始
@tableName VARCHAR(50), --表名
@pageSize INT=5, --显示的条数
@condition VARCHAR(1000)='1=1', --where语句的条件部分
@key VARCHAR(20)='id', --主建列名
@orderType VARCHAR(20)='desc' --排序方式
)AS
BEGIN
DECLARE @TopCount INT
--SET @TopCount=(@pageIndex-1)*@pageSize
DECLARE @SQL VARCHAR(1000)
SET @SQL='select TOP ' +CONVERT(VARCHAR(20),@pagesize)+' * FROM '+@tableName
+' WHERE '+ @condition+' and '+@key+' NOT IN(SELECT TOP ' +CONVERT(VARCHAR(20),@startIndex)+' '+@key+' FROM '+@tableName+' where '+@condition+' order by '+@key+' '+@orderType+') order by '+@key+' '+@orderType
--SET @SQL =@SQL+' SELECT COUNT(*) FROM '+@TableName+' WHERE '+@condition
PRINT(@SQL)
EXEC(@SQL)
END

2.SQL中的统计条数存诸过程

 

CREATE  PROCEDURE  GetDataByPager_Count --计算表记录总条数
(
@tableName VARCHAR(200), --表名
@condition VARCHAR(1000)='1=1' --条件
)
AS
BEGIN
DECLARE @strsql VARCHAR(2000)
SET @strsql = 'select count(*) from '+@tableName+' where '+@condition
EXEC(@strsql)
END

3.在要分页的表的数据防问层添加如下方法    

//调用第一个存诸过程

public  static  IList<UserInfo>  GetUserInfoByPager(int  start, int  limit, stirng condition, string  id, string asc)

 {

    string  strSql=string.Format("Exec GetDataByPager2  {0},'{1}',{2},'{3}','{4}','{5}'",start,"TableName",limit,condition,id,asc);

       //上面根据实际情况来定先参数和设计方法                                                                      表名在这里直接给

   return  GetUserInfoBySql( strSql );

 }

//调用第二个存诸过程

public  static  int  GetUserInfoByPager_Count( string  condiction )

{

   sting  strSql=string.Format( "GetDataByPager_Count  '{0}','{1}'", “TableName, condiction);

   return DBHelper.Get.Scalar( strSql);                                         //表名在这里直接给

}

4.在业处逻辑层添加相处理这里略........

5将AsqNet的DLL拖到控件工具菜单,并在项目下APP_Code文件夹下添加此控件引用DLL。

6.在项目下添加一个Control文件夹,并在其内添中  右键-添加新项-Web用户控件,将控件工具菜单中的AspNet.DLL添加到这个Web用户控件。

7.配置AspNet控件,重点设置   <自定义信息区显示方式及内容>

    选择   ——左 边

    属性值:

每页显示<input type='text' style='width:30px;' readonly='true' value='%PageSize%' class='input_text' style='text-align:center' />条 当前 %CurrentPageIndex%%PageCount% 页 共 %RecordCount% 条记录

 

8.Web用户控件后台代码

 

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

 

public partial class Control_ucAspNetPager : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

 

    }
    //起始记录
    public int StartIndex
    {
     get
        {
           return AspNetPager1.StartRecordIndex;
       }
    }
    /// <summary>
    /// 每页的页容量
    /// </summary>
    public int PageSize
    {
      get
       {
         return AspNetPager1.PageSize;
       }
      set

        {
           AspNetPager1.PageSize = value;
         }
     }
     ///<summary>
    /// 总记录数
    /// </summary>
   public int RecordCount
    {
     set
        {
           AspNetPager1.RecordCount = value;
        }
    }
}

9.设置GridView 新建数据源,设置  对象  绑定方法。

  设置参数:

 Start参数设置: 数据源  为 Control       先显示高级属性      在属性中 ControlID设置成UcAspNetPager

  然后下接找到propertyName  这里要手写值为 :StartIndex

limit参数:设置同上不过PropertyName 这里的值为PageSize

condition参数的设置:先隐藏高级属性,然后先把参数源设 :None, DefaultValue  里设置条件或1=1;

10.在当前分页的页的后台Page_Load事件里加上如下代码

  protected   void  page_Load(object sender,EventArgs e)

  {

    if(!IsPostBack)

     {

         UcAspNetPager1.RecordCount=BLL.UserInfoManager.GetUserInfoByPager_Count("1=1"); 

          //也就是调用第二个存诸过程的方法,设置他的条件

     }

 }

11.编辑GridView的列  删除不要的列,添加外键列,将其转为模板列。

然后编辑该模板,在ItemTamplate的Lablel小三角中 编辑DataBindings      去掉双向绑定勾, 选中 自定义绑定  

在代码表达式 :    Eval("外键.次表属性")  结束编辑

   

 

posted @ 2012-06-04 13:04  酒沉吟  阅读(555)  评论(0编辑  收藏  举报