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