今天写了 一个 方便 三层 调用 AspNetPager 的类
代码如下:
文件 Common 项目中 GridViewPaging.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using Wuqi.Webdiyer;
namespace Common
{
public class GridViewPaging
{
public void PagingBind(string TableName , Wuqi.Webdiyer.AspNetPager PagerControl)
{
DAL.BaseDAL baseDal = new DAL.BaseDAL();
if (baseDal.conn.State != System.Data.ConnectionState.Open)
{
baseDal.conn.Open();
}
StringBuilder sb = new StringBuilder();
sb.Append("select count(*) from " + TableName);
baseDal.cmd.CommandText = sb.ToString();
PagerControl.RecordCount = (int)baseDal.cmd.ExecuteScalar();
baseDal.conn.Close();
}
}
}
DAL中 BaseDal 调用:
/// <summary>
/// 分页查询
/// </summary>
/// <param name="sqlText">查询语句</param>
/// <param name="Pager">分页控件命名</param>
/// <returns>DataTable</returns>
public DataTable SelectBySql(string sqlText,Wuqi.Webdiyer.AspNetPager Pager,string TableName)
{
OleDbDataAdapter da = new OleDbDataAdapter(sqlText, conn);
DataTable dt = new DataTable();
DataSet ds = new DataSet();
da.Fill(ds, (Pager.PageSize * (Pager.CurrentPageIndex - 1)),Pager.PageSize,TableName);
dt = ds.Tables[0];
da.Dispose();
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
return dt;
}
绑定 到DataTable
/// <summary>
/// 分页查询
/// </summary>
/// <param name="Pager"></param>
/// <returns></returns>
public DataTable SelectByPaging(AspNetPager Pager)
{
StringBuilder sb = new StringBuilder();
sb.Append("SELECT ");
sb.Append(" * FROM FORUM_MAIN ORDER BY CREATE_DATE DESC");
return SelectBySql(sb.ToString(),Pager,"FORUM_MAIN");
}
显示层 需要在2个地方进行编写
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Common.GridViewPaging pager = new Common.GridViewPaging();
pager.PagingBind("FORUM_MAIN", this.gvpList);
this.BindData();
}
}
//---------------
protected void gvpList_PageChanging(object src, PageChangingEventArgs e)
{
gvpList.CurrentPageIndex = e.NewPageIndex;
this.BindData();
}
BLL就不写具体的了。
ok 全部绑定完毕。
需要注意的事,在每个层中 必须 引用 System.Web.UI.WebControls 命名。 否则会 报错。
代码如下:
文件 Common 项目中 GridViewPaging.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using Wuqi.Webdiyer;
namespace Common
{
public class GridViewPaging
{
public void PagingBind(string TableName , Wuqi.Webdiyer.AspNetPager PagerControl)
{
DAL.BaseDAL baseDal = new DAL.BaseDAL();
if (baseDal.conn.State != System.Data.ConnectionState.Open)
{
baseDal.conn.Open();
}
StringBuilder sb = new StringBuilder();
sb.Append("select count(*) from " + TableName);
baseDal.cmd.CommandText = sb.ToString();
PagerControl.RecordCount = (int)baseDal.cmd.ExecuteScalar();
baseDal.conn.Close();
}
}
}
DAL中 BaseDal 调用:
/// <summary>
/// 分页查询
/// </summary>
/// <param name="sqlText">查询语句</param>
/// <param name="Pager">分页控件命名</param>
/// <returns>DataTable</returns>
public DataTable SelectBySql(string sqlText,Wuqi.Webdiyer.AspNetPager Pager,string TableName)
{
OleDbDataAdapter da = new OleDbDataAdapter(sqlText, conn);
DataTable dt = new DataTable();
DataSet ds = new DataSet();
da.Fill(ds, (Pager.PageSize * (Pager.CurrentPageIndex - 1)),Pager.PageSize,TableName);
dt = ds.Tables[0];
da.Dispose();
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
return dt;
}
绑定 到DataTable
/// <summary>
/// 分页查询
/// </summary>
/// <param name="Pager"></param>
/// <returns></returns>
public DataTable SelectByPaging(AspNetPager Pager)
{
StringBuilder sb = new StringBuilder();
sb.Append("SELECT ");
sb.Append(" * FROM FORUM_MAIN ORDER BY CREATE_DATE DESC");
return SelectBySql(sb.ToString(),Pager,"FORUM_MAIN");
}
显示层 需要在2个地方进行编写
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Common.GridViewPaging pager = new Common.GridViewPaging();
pager.PagingBind("FORUM_MAIN", this.gvpList);
this.BindData();
}
}
//---------------
protected void gvpList_PageChanging(object src, PageChangingEventArgs e)
{
gvpList.CurrentPageIndex = e.NewPageIndex;
this.BindData();
}
BLL就不写具体的了。
ok 全部绑定完毕。
需要注意的事,在每个层中 必须 引用 System.Web.UI.WebControls 命名。 否则会 报错。