| 在 Web 中实现数据分页的自动管理!嘿嘿(二) |
| 作者/天才 时间/2006-1-10 17:32:00 类别/开发技术 查看/ |
| 标签:.Net联盟 |
作者:黄润成![]() 二、用户控件 1、页面: <%@ Control Language="c#" AutoEventWireup="false" Codebehind="DataPageNav.ascx.cs" Inherits="Favorites.UserControls.DataPageNav" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%> <table id="FooterTab" align="right" border="0" runat="server"> <TR> <TD align="right"><asp:linkbutton id="FirstPage" CommandName="FirstPage" OnCommand="PageChanged" text="首页" runat="server"></asp:linkbutton>&nbsp;<asp:linkbutton id="PreviousPage" CommandName="PreviousPage" OnCommand="PageChanged" text="上页" runat="server"></asp:linkbutton>&nbsp; | <B>页 <FONT color="#ff0000"> <asp:label id="lblCurPageNo" runat="server" Width="12px" Text="1">1</asp:label></FONT>OF <FONT color="#ff0000"> <asp:label id="lblTotalPages" runat="server" Width="12px"></asp:label></FONT>共<FONT color="#ff0000"> <asp:label id="lblTotalRows" runat="server" Width="12px"></asp:label></FONT>条记录</B>|&nbsp;&nbsp; <asp:linkbutton id="NextPage" CommandName="NextPage" OnCommand="PageChanged" text="下页" runat="server"></asp:linkbutton>&nbsp; <asp:linkbutton id="LastPage" CommandName="LastPage" OnCommand="PageChanged" text="末页" runat="server"></asp:linkbutton>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT id="txtCurPageNo" type="text" size="2" name="pagevalue" runat="server">&nbsp; <asp:button class="box" id="btnSearch" onclick="GotoPage" runat="server" Text="GO"></asp:button></TD> </TR> </table> 2、后台代码: namespace Favorites.UserControls { using System; using System.Data; using System.Drawing; using System.Web; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using it.com.cn.DbServices; using it.com.cn.DbServices.SqlDbServices; /// <summary> /// 说明: 1、用户控件,用于数据分页显示; /// 作者: 黄润成 /// 日期: 2005-12-7 /// 修改: 1、 /// </summary> public class DataPageNav : System.Web.UI.UserControl { protected System.Web.UI.WebControls.LinkButton FirstPage; protected System.Web.UI.WebControls.LinkButton PreviousPage; protected System.Web.UI.WebControls.LinkButton NextPage; protected System.Web.UI.WebControls.LinkButton LastPage; protected System.Web.UI.WebControls.Label lblTotalPages; protected System.Web.UI.WebControls.Label lblTotalRows; protected System.Web.UI.WebControls.Label lblCurPageNo; protected System.Web.UI.HtmlControls.HtmlInputText txtCurPageNo; protected System.Web.UI.WebControls.Button btnSearch; protected System.Web.UI.WebControls.Repeater FDataViewer = null; protected it.com.cn.DbServices.SqlDbServices.InsReaderPage FDataPageMan = null; protected string FSqlString = string.Empty; protected string FKeyField = string.Empty; protected DbParams FParams = null; protected int FPageSize = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["UserPageSize"]); protected System.Web.UI.HtmlControls.HtmlTable FooterTab; protected string FViewStateName = "DataPageNav"; /// <summary> /// 将绑定数据的对象赋值给该属性,用于绑定数据。 /// 赋值语句必须放在有关 IsPostBack 判断的外面,因为每次刷新页面时用户控件中的引用会清空。 /// </summary> public System.Web.UI.WebControls.Repeater DataViewer { get { return FDataViewer; } set { //if ((value is Repeater) || (value is BaseDataList)) { FDataViewer = value; } // else // { // throw new Exception("向分页对象的数据显示对象赋值时发生错误!\n数据显示对象类型不正确。"); // } } } /// <summary> /// 获取 或 设置 数据分页对象,如果不对该属性赋值,则根据 SqlString、KeyField、Params、PageSize 属性值自动创建数据分页对象。 /// </summary> public InsReaderPage DataPageMan { get { return FDataPageMan; } set { FDataPageMan = value; } } /// <summary> /// 获取 或 设置 自动创建的数据分页对象所使用的查询语句。 /// </summary> public string SqlString { get { return FSqlString; } set { FSqlString = value; if (FDataPageMan != null) FDataPageMan.SetSqlString(FSqlString, FKeyField); } } /// <summary> /// 获取 或 设置 自动创建的数据分页对象所使用的查询关键字段。 /// </summary> public string KeyField { get { return FKeyField; } set { FKeyField = value; if (FDataPageMan != null) FDataPageMan.SetSqlString(FSqlString, FKeyField); } } /// <summary> /// 获取 或 设置 自动创建的数据分页对象所使用的查询参数。 /// </summary> public DbParams Params { get { return FParams; } set { FParams = value; if (FDataPageMan != null) FDataPageMan.Params = FParams; } } /// <summary> /// 获取 或 设置 自动创建的数据分页对象所使用的数据分页大小。 /// </summary> public int PageSize { get { return FPageSize; } set { FPageSize = value; if (FDataPageMan != null) FDataPageMan.PageSize = FPageSize; } } /// <summary> /// 设置 保存数据分页对象的 ViewState 视图状态的索引名称。 /// </summary> public string ViewStateName { set { FViewStateName = value; } } private void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { if (FDataPageMan == null) { FDataPageMan = new InsReaderPage(FSqlString, FKeyField, FParams, FPageSize); } //取第一页数据 FDataPageMan.FirstPage(FDataViewer); SetStates(); } //设置样式表 FooterTab.Attributes["class"] = this.Attributes["cssclass"]; } protected void SetStates() { //设置导航按钮状态 FDataPageMan.SetButtonsStatus(FirstPage, PreviousPage, NextPage, LastPage); //显示当前页码 lblCurPageNo.Text = FDataPageMan.CurrentPageNo.ToString(); txtCurPageNo.Value = FDataPageMan.CurrentPageNo.ToString(); //显示总页数 lblTotalPages.Text = FDataPageMan.TotalPagesCount.ToString(); //显示记录总数 lblTotalRows.Text = FDataPageMan.TotalRowsCount.ToString(); //保存数据分页对象 ViewState[FViewStateName] = FDataPageMan; } //翻页 protected void PageChanged(object sender,CommandEventArgs e) { FDataPageMan = (InsReaderPage) ViewState[FViewStateName]; if (FDataPageMan == null) { return; } switch(e.CommandName) { case "FirstPage": FDataPageMan.FirstPage(FDataViewer); break; case "PreviousPage": FDataPageMan.PreviousPage(FDataViewer); break; case "NextPage": FDataPageMan.NextPage(FDataViewer); break; case "LastPage": FDataPageMan.LastPage(FDataViewer); break; } SetStates(); } //转到指定页 protected void GotoPage(object sender,System.EventArgs e) { FDataPageMan = (InsReaderPage) ViewState[FViewStateName]; if (FDataPageMan == null) { return; } FDataPageMan.GotoPage(FDataViewer, int.Parse(txtCurPageNo.Value.Trim())); SetStates(); } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器 /// 修改此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } } |
| 查看该用户更多文章>> |
