如题,自己写了个,但感觉上很没层次感(在这就不贴出来误人子弟了)所以想看看大家的方法注:要非存储过程的,只须贴出业务层和数据层的分页代码即可
解决方案 »
- asp.net要如何布局?
- Page.RegisterStartupScript()原理?能否和前台js代码交流?
- 100分,求这样的网页效果,好像是javascript的,请高手帮助。在线,立即给分。
- Serv-u设置odbc数据源编程添加用户,但无法访问FTP
- 请教有经验的高手
- 哪位大侠帮帮忙,请问FILE控件怎么接收显示数据库表里某个字段里的字符数据
- 菜鸟问题:1个网页3k 个访问,3k 个网页每页1个访问,是哪种方式消耗的资源比较少、性能会比较好?
- webform如何响应内嵌winform控件的事件?
- 后台获取动态生成的HTML控件Textarea的输入在文本框中的内容
- 怎么取出服务器端的指定excel文件的数据?
- skin & theme(皮肤和主题)的问题
- 对网页拍照软件webshot熟悉的人请进——
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.EnterpriseLibrary.Data;
using HangBiao.AOA.ChuanBo;
using Reform.Common;public partial class AOA_ChuanBo_DongTai_Manage : System.Web.UI.Page
{
Database db = DatabaseFactory.CreateDatabase("HangBiao");
readonly int PAGE_SIZE = 10; protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int recordCount = GetTotalTransferCount();
if (recordCount <= PAGE_SIZE)
{
BindRP();
}
else
{
CurrentPage = 1;
LoadPageRecord();
}
}
} #region 当前页
/// <summary>
/// 当前页
/// </summary>
private int CurrentPage
{
get
{
if (ViewState["currentpage"] == null)
{
return 1;
}
else
{
return int.Parse(ViewState["currentpage"].ToString());
}
}
set
{
ViewState["currentpage"] = value;
}
}
#endregion #region 计算总页数
/// <summary>
/// 计算总页数
/// </summary>
/// <returns>总页数</returns>
private int GetPageCount()
{
int recordCount = GetTotalTransferCount();
int result = 0;
if (recordCount % PAGE_SIZE == 0)
{
result = recordCount / PAGE_SIZE;
}
else
{
result = recordCount / PAGE_SIZE + 1;
}
return result;
}
#endregion #region 取得船舶动态总条数
/// <summary>
/// 取得船舶动态总条数
/// </summary>
/// <returns>船舶动态总条数</returns>
private int GetTotalTransferCount()
{
int result = 0;
ShipStatusBLL statusBLL = new ShipStatusBLL(db);
result = statusBLL.GetTotalCount();
return result;
}
#endregion #region 加载分页数据
/// <summary>
/// 加载分页数据
/// </summary>
private void LoadPageRecord()
{
ShipStatusBLL bll = new ShipStatusBLL(db);
ArrayList alAllRecords = bll.GetAll();
ArrayList alBind = new ArrayList();
int startRecord = (CurrentPage - 1) * PAGE_SIZE;
for (int i = startRecord; i < startRecord + PAGE_SIZE; i++)
{
if (i <= alAllRecords.Count - 1)
{
alBind.Add(alAllRecords[i]);
}
else
{
break;
}
}
rpStatus.DataSource = alBind;
rpStatus.DataBind();
}
#endregion protected void lnkbtnFirst_Click(object sender, EventArgs e)
{
CurrentPage = 1;
LoadPageRecord();
} protected void lnkbtnPrevous_Click(object sender, EventArgs e)
{
CurrentPage--;
LoadPageRecord();
} protected void lnkbtnNext_Click(object sender, EventArgs e)
{
CurrentPage++;
LoadPageRecord();
} protected void lnkbtnLast_Click(object sender, EventArgs e)
{
CurrentPage = GetPageCount();
LoadPageRecord();
} protected void lnkbtnEdit_Click(object sender, EventArgs e)
{ } protected void lnkbtnDelete_Click(object sender, EventArgs e)
{
string id = (sender as LinkButton).ToolTip;
ShipStatusBLL statusBLL = new ShipStatusBLL(db);
if (statusBLL.Delete(id) > 0)
{
ReformMessage.msg("删除成功", this);
}
else
{
ReformMessage.msg("删除失败", this);
}
CurrentPage = 1;
LoadPageRecord();
} protected void btnFind_Click(object sender, EventArgs e)
{ } private void BindRP()
{
ShipStatusBLL statusBLL = new ShipStatusBLL(db);
ArrayList alStatus = statusBLL.GetAll();
rpStatus.DataSource = alStatus;
rpStatus.DataBind();
}
protected void rpStatus_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
ShipStatusData data = e.Item.DataItem as ShipStatusData;
Label hlShip = e.Item.FindControl("hlShip") as Label;
hlShip.Text = data.ShipName;
Label lblDate = e.Item.FindControl("lblDate") as Label;
lblDate.Text = data.StatusDate.ToShortDateString();
HyperLink hlStatus = e.Item.FindControl("hlStatus") as HyperLink;
if (data.Status.Length > 10)
{
hlStatus.Text = data.Status.Substring(0, 10) + "...";
}
else
{
hlStatus.Text = data.Status;
}
hlStatus.NavigateUrl = "DongTai_View.aspx?ID=" + data.ID.ToString(); LinkButton lnkbtnEdit = e.Item.FindControl("lnkbtnEdit") as LinkButton;
LinkButton lnkbtnDelete = e.Item.FindControl("lnkbtnDelete") as LinkButton;
lnkbtnEdit.PostBackUrl = "DongTai_Edit.aspx?ID=" + data.ID.ToString();
lnkbtnDelete.ToolTip = data.ID.ToString();
ReformMessage.isDelete(data.ShipName + "的此条船舶动态", lnkbtnDelete);
}
else if (e.Item.ItemType == ListItemType.Footer)
{
if (GetTotalTransferCount() <= PAGE_SIZE)
{
foreach (Control ctl in e.Item.Controls)
{
ctl.Visible = false;
}
}
else
{
Label lblTotalPage = e.Item.FindControl("lblTotalPage") as Label;
lblTotalPage.Text = "共 " + GetPageCount().ToString() + " 页"; if (CurrentPage == 1)
{
LinkButton lnkbtnFirst = e.Item.FindControl("lnkbtnFirst") as LinkButton;
LinkButton lnkbtnPrevous = e.Item.FindControl("lnkbtnPrevous") as LinkButton;
lnkbtnFirst.Visible = false;
lnkbtnPrevous.Visible = false;
}
else if (CurrentPage == GetPageCount())
{
LinkButton lnkbtnNext = e.Item.FindControl("lnkbtnNext") as LinkButton;
LinkButton lnkbtnLast = e.Item.FindControl("lnkbtnLast") as LinkButton;
lnkbtnNext.Visible = false;
lnkbtnLast.Visible = false;
}
} // end of if (GetTotalTransferCount() <= PAGE_SIZE)
} //end of else if (e.Item.ItemType == ListItemType.Footer)
}
}
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<link href="../../App_Themes/styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<center>
<asp:Repeater ID="rpStatus" runat="server" OnItemDataBound="rpStatus_ItemDataBound">
<HeaderTemplate>
<table border="0" cellpadding="3" cellspacing="0" class="table_line_color" style="width: 500px">
<tr>
<td class="title" colspan="5">
<asp:Image ID="Image1" runat="server" ImageUrl="~/images/btn_01.gif" /> 航标动态管理
<asp:Button ID="btnAdd" runat="server" Text="点击添加" PostBackUrl="DongTai_Add.aspx" /></td>
</tr>
<%--<tr>
<td class="tr1" style="width: 100px" align="left">
<asp:CheckBox ID="ckbShip" runat="server" Text="船舶名称" /></td>
<td class="tr1" style="width: 100px" align="left">
<asp:DropDownList ID="ddlShips" runat="server">
</asp:DropDownList></td>
<td class="tr1" align="left" colspan="3">
<asp:CheckBox ID="ckbDate" runat="server" Text="日期" />
<asp:TextBox ID="TextBox1" runat="server" Width="60px"></asp:TextBox>
至<asp:TextBox ID="TextBox2" runat="server" Width="60px"></asp:TextBox>
<asp:Button ID="btnFind" runat="server" Text="查询" OnClick="btnFind_Click" /></td>
</tr>--%>
<tr>
<td align="left" class="title" style="width: 100px">
船舶名称</td>
<td align="left" class="title" style="width: 100px">
日期</td>
<td align="left" class="title" style="width: 200px">
船舶动态</td>
<td align="left" class="title" style="width: 50px">
</td>
<td align="left" class="title" style="width: 50px">
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="tr1">
<td style="width: 100px" align="left">
<asp:Label ID="hlShip" runat="server">[hlShip]</asp:Label></td>
<td style="width: 100px" align="left">
<asp:Label ID="lblDate" runat="server"></asp:Label></td>
<td style="width: 200px" align="left">
<asp:HyperLink ID="hlStatus" runat="server">hlStatus</asp:HyperLink></td>
<td style="width: 50px" align="left">
<asp:LinkButton ID="lnkbtnEdit" runat="server" OnClick="lnkbtnEdit_Click">编辑</asp:LinkButton></td>
<td style="width: 50px" align="left">
<asp:LinkButton ID="lnkbtnDelete" runat="server" OnClick="lnkbtnDelete_Click">删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="tr2">
<td style="width: 100px" align="left">
<asp:Label ID="hlShip" runat="server">[hlShip]</asp:Label></td>
<td style="width: 100px" align="left">
<asp:Label ID="lblDate" runat="server"></asp:Label></td>
<td style="width: 200px" align="left">
<asp:HyperLink ID="hlStatus" runat="server">hlStatus</asp:HyperLink></td>
<td style="width: 50px" align="left">
<asp:LinkButton ID="lnkbtnEdit" runat="server" OnClick="lnkbtnEdit_Click">编辑</asp:LinkButton></td>
<td style="width: 50px" align="left">
<asp:LinkButton ID="lnkbtnDelete" runat="server" OnClick="lnkbtnDelete_Click">删除</asp:LinkButton></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
<tr>
<td colspan="5" align="right" class="tr1">
<asp:Label ID="lblTotalPage" runat="server"></asp:Label>
<asp:LinkButton ID="lnkbtnFirst" runat="server" OnClick="lnkbtnFirst_Click">第一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnPrevous" runat="server" OnClick="lnkbtnPrevous_Click">上一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnNext" runat="server" OnClick="lnkbtnNext_Click">下一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnLast" runat="server" OnClick="lnkbtnLast_Click">最后一页</asp:LinkButton>
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
</center>
</div>
</form>
</body>
</html>
pweb.user.pweb_user userpassword = new pweb.user.pweb_user();
User user = new User();
第二层:
member.AddNewUser(user);
第三层: try
{
user.UserName = tb_username.Text.Trim();
user.CityID = int.Parse(ddl_city.SelectedValue);
user.UserPassWord = userpassword.sha1(tb_password.Text.Trim());
user.UserTrueName = tb_realname.Text;
user.CityID = int.Parse(ddl_city.SelectedValue);
user.UserEmail = tb_useremail.Text;
user.UserMobile = tb_usertelphone.Text;
user.UserSex = Convert.ToBoolean(int.Parse(ddl_sex.Text));
member.AddNewUser(user);
Response.Write("<script>alert('恭喜您,注册成功!');window.location.href='Login.aspx';</script>"); } catch
{
//throw new Exception(ex.Message);
ShowErrMsg("该用户名已存在!"); }
我这个是分了4层的
在表做个字段用与排序 1,2,3,4...
做个触发器 删除的时候把大于该条的 所有该字段数 -1 保证字段连贯
我觉得取那一页 一页多少行都是表示层的事
在逻辑层做 返回对象组 参数为起始行 行数的接口函数
数据访问层 也做一个
查询 用top
[email protected]
研究好了,你的.NET FrameWork 2.0也差不多了
PetShop 分页
是用
<PetShopControl:CustomList ID="productsList" runat="server" EmptyText="No products found." OnPageIndexChanged="PageChanged" PageSize="4" RepeatColumns="2" CellPadding="16" CellSpacing="0" Width="500px">
</PetShopControl:CustomList>
可是我怎么都找不到CustomList在那儿 高手指点下
{
public int CurPage, PageLength;
public string TableName, Fields, Where, KeyField;
public bool IsDesc; public Pagination(string _TableName, string _KeyField, string _Fields, string _Where, bool _IsDesc, int _CurPage, int _PageLength)
{
this.CurPage = _CurPage;
this.PageLength = _PageLength;
this.TableName = _TableName;
this.KeyField = _KeyField;
this.Fields = _Fields;
this.Where = _Where;
this.IsDesc = _IsDesc;
} public Pagination(string _TableName, string _KeyField, string _Fields, string _Where, int _CurPage, int _PageLength)
{
this.CurPage = _CurPage;
this.PageLength = _PageLength;
this.TableName = _TableName;
this.KeyField = _KeyField;
this.Fields = _Fields;
this.Where = _Where;
this.IsDesc = true;
}
}
根据结构体,获得当前的分页SQL(利用Top,Max原理) public class Common
{
public static string GetCmdText(Pagination P)
{
string sql_Data = string.Empty; string where = " where 1=1";
if (!string.IsNullOrEmpty(P.Where))
where += string.Format(" and {0}", P.Where); string order = string.Format(" order by {0}", P.KeyField);
if (P.IsDesc)
order += " desc"; if (P.CurPage == 1)
sql_Data = string.Format("select top {0} {1} from [{2}]{3}{4}", P.PageLength, P.Fields, P.TableName, where, order);
else
{
string temp = string.Empty;
int point = (P.CurPage - 1) * P.PageLength;
if (P.IsDesc)
temp = string.Format("<(select min({0}) from (select top {1} {0} from [{2}]{3}{4}) T)", P.KeyField, point, P.TableName, where, order);
else
temp = string.Format(">(select max({0}) from (select top {1} {0} from [{2}]{3}{4}) T)", P.KeyField, point, P.TableName, where, order);
sql_Data = string.Format("select top {0} {1} from [{2}]{3} and {4}{5}{6}", P.PageLength, P.Fields, P.TableName, where, P.KeyField, temp, order);
}
return sql_Data;
}
}
上边为DAL层的辅助类,目的就是为了方便的写出分页代码,(主要是偷懒,嘿嘿)下面请看示例:DAL: public class type_Trade
{
public DataTable GetTradePagedData(int curPage, int pageLength)
{
Pagination P = new Pagination("type_Trade", "typeID", "*", "", curPage, pageLength);
string cmdText = Common.GetCmdText(P);
return BaseHelper.ExecuteDataTable(cmdText);
} public int GetTradeItemCount()
{
string cmdText = "select Count(*) from type_Trade";
return int.Parse(BaseHelper.ExecuteFirstCell(cmdText).ToString());
}
}BLL: public class Type_Trade
{
private static readonly DAL.type_Trade trade = new type_Trade(); public DataTable GetTradePagedData(string curPage, out int itemCount, out int pageCount)
{
int pageLength = 20;
int pageIndex = 0;
int.TryParse(curPage, out pageIndex);
if (pageIndex < 1)
pageIndex = 1;
itemCount = trade.GetTradeItemCount();
pageCount = (int)Math.Ceiling((decimal)itemCount / (decimal)pageLength);
if (pageIndex > pageCount && pageCount != 0)
pageIndex = pageCount;
DataTable dt = trade.GetTradePagedData(pageIndex, pageLength);
return dt;
}
}然后就是UI层的调用注:代码中的BaseHelper是我自己封的访问底层。太长就不贴了
有意思
你把他用数组做 在合成sql的时候在加','连接起来
类中个属性返回其数组中相应值
不就也能但数据载体用了
在用之前 他已经是 带有','的 SQL 语句片断