• 使用 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='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("外键.次表属性")  结束编辑

       

     

  • 相关阅读:
    IO流
    myEclipse的使用
    单例模式
    日期的使用
    String类的常用方法
    break、continue和return的区别
    包装类和随机数
    enum类的使用
    Java基础概念性的知识总结
    汇编中的函数调用与递归
  • 原文地址:https://www.cnblogs.com/yingger/p/2534516.html
Copyright © 2020-2023  润新知