您的位置:首页 > 数据库 > SQL

结合aspnetpager控件和三层的sql语句的分页

2012-09-23 15:29 459 查看
Model层:

using System;

namespace TestWeb.Model

{

/// <summary>

/// _userInfo:实体类(属性说明自动提取数据库字段的描述信息)

/// </summary>

[Serializable]

public partial class _userInfo

{

public _userInfo()

{}

#region Model

private int _u_id;

private string _u_name;

private string _u_pwd;

private DateTime? _u_date;

/// <summary>

///

/// </summary>

public int u_id

{

set{ _u_id=value;}

get{return _u_id;}

}

/// <summary>

///

/// </summary>

public string u_name

{

set{ _u_name=value;}

get{return _u_name;}

}

/// <summary>

///

/// </summary>

public string u_pwd

{

set{ _u_pwd=value;}

get{return _u_pwd;}

}

/// <summary>

///

/// </summary>

public DateTime? u_date

{

set{ _u_date=value;}

get{return _u_date;}

}

#endregion Model

}

}

DAL层:

/// <summary>

/// 分页获取数据列表

/// </summary>

public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)

{

StringBuilder strSql=new StringBuilder();

strSql.Append("SELECT * FROM ( ");

strSql.Append(" SELECT ROW_NUMBER() OVER (");

if (!string.IsNullOrEmpty(orderby.Trim()))

{

strSql.Append("order by T." + orderby );

}

else

{

strSql.Append("order by T.u_id asc");

}

strSql.Append(")AS Row, T.* from _userInfo T ");

if (!string.IsNullOrEmpty(strWhere.Trim()))

{

strSql.Append(" WHERE " + strWhere);

}

strSql.Append(" ) TT");

strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);

return DbHelperSQL.Query(strSql.ToString());

}

DBHelper:

/// <summary>

/// 执行查询语句,返回DataSet

/// </summary>

/// <param name="SQLString">查询语句</param>

/// <returns>DataSet</returns>

public static DataSet Query(string SQLString)

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

DataSet ds = new DataSet();

try

{

connection.Open();

SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);

command.Fill(ds, "ds");

}

catch (System.Data.SqlClient.SqlException ex)

{

throw new Exception(ex.Message);

}

return ds;

}

}

BLL层:

/// <summary>

/// 分页获取数据列表

/// </summary>

public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)

{

return dal.GetListByPage( strWhere, orderby, startIndex, endIndex);

}

Web层:Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestWeb.Web.Default" %>

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>风若寒</title>

</head>

<body>

<form id="Form1" runat="server">

<asp:Repeater ID="Repeater1" runat="server">

<HeaderTemplate>

<table width="100%" border="1" cellspacing="0" cellpadding="4" style="border-collapse:collapse">

<tr style="backGround-color:#CCCCFF"><th style="width:15%">

<asp:Literal ID="Literal1" runat="server" Text="用户id" />

</th><th style="width:15%">

<asp:Literal ID="Literal3" runat="server" Text="用户名" /></th>

<th style="width:30%"><asp:Literal ID="Literal5" runat="server" Text="密码" /></th>

<th style="width:20%"><asp:Literal ID="Literal2" runat="server" Text="注册时间" /></th>

</tr>

</HeaderTemplate>

<ItemTemplate>

<tr style="background-color:#FAF3DC">

<td><%#DataBinder.Eval(Container.DataItem, "u_id")%></td>

<td><%#DataBinder.Eval(Container.DataItem, "u_name")%></td>

<td><%#DataBinder.Eval(Container.DataItem,"u_pwd")%></td>

<td><%#DataBinder.Eval(Container.DataItem, "u_date", "{0:d}")%></td>

</tr>

</ItemTemplate>

<FooterTemplate>

</table>

</FooterTemplate>

</asp:Repeater>

<webdiyer:AspNetPager ID="AspNetPager1" runat="server" Width="100%"

onpagechanging="AspNetPager1_PageChanging"

onpagechanged="AspNetPager1_PageChanged">

</webdiyer:AspNetPager>

</form>

</body>

</html>

default.aspx.cs:

namespace TestWeb.Web

{

public partial class Default :BaseUser

{

BLL._userInfo userInfo = new BLL._userInfo();

protected override void OnLoad(EventArgs e)

{

base.OnLoad(e);

new BaseUser().PageinationBind(AspNetPager1);// aspNetPager的样式

if (!IsPostBack)

{

DataBindRe();

}

}

/// <summary>

/// 绑定数据源

/// </summary>

public void DataBindRe()

{

AspNetPager1.RecordCount = userInfo.GetAllList().Tables[0].Rows.Count;//总共多少条数据

AspNetPager1.PageSize = 5;//一页多少条数据

int startRowIndex = (this.AspNetPager1.CurrentPageIndex-1) * AspNetPager1.PageSize+1;//从1开始进行索引

int endRowIndex = (AspNetPager1.PageSize-1)+startRowIndex;//5的时候结束索引

Repeater1.DataSource = userInfo.GetListByPage("","",startRowIndex,endRowIndex);//分页获得数据

Repeater1.DataBind();//绑定

}

protected void AspNetPager1_PageChanged(object sender, EventArgs e)

{

DataBindRe();

}

protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)

{

this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;//获取分页控件当前选择的页数

}

}

}

在web层添加公共的基类

BaseUser.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using TestWeb.BLL;

using Maticsoft.Common;

namespace TestWeb.Web

{

public class BaseUser:BasePage

{

private int u_id;

private string u_name;

private string u_date;

public string U_date

{

get { return u_date; }

set { u_date = value; }

}

protected override void OnLoad(EventArgs e)

{

base.OnLoad(e);

// if (Request.Cookies["User"] == null)

// {

// Response.Redirect(Maticsoft.Common.Constant.UserLoginWeb);

// Response.End();

// }

// else

// {

// u_id = Convert.ToInt32(Request.Cookies["User"]["u_id"].ToString());//cookies的值

// u_name =Request.Cookies["User"]["u_name"].ToString();

// }

}

public int U_id

{

get { return u_id; }

set { u_id = value; }

}

public string U_name

{

get { return u_name; }

set { u_name = value; }

}

}

}

基类BasePage.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

namespace TestWeb.Web

{

public class BasePage:System.Web.UI.Page

{

/// <summary>

/// 分页参数设置

/// </summary>

/// <param name="AspNetPager"></param>

public void PageinationBind(Wuqi.Webdiyer.AspNetPager AspNetPager)

{

AspNetPager.UrlPaging = false;//获取或设置是否启用url来传递分页信息

AspNetPager.ShowPageIndexBox = Wuqi.Webdiyer.ShowPageIndexBox.Never;//指定页索引框的显示方式,以便用户输入或从下拉框中选择需要跳转的页索引

AspNetPager.FirstPageText = "首页";

AspNetPager.LastPageText = "尾页";

AspNetPager.NextPageText = "下一页";

AspNetPager.PrevPageText = "上一页";

}

}

}

数据控件直接换成需要的即可

效果如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: