日期:2011-01-13  浏览次数:20450 次

//此源代码仅供学习参考,不得用作任何商业用途;
//若需修改并重新编译该控件,请保留完整的源代码的版权信息!
//有关控件升级及新控件发布信息,请留意 www.webdiyer.com
using System;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
namespace Wuqi.Webdiyer
{
#region AspNetPager Server Control

#region 控件说明及示例
/// <summary>
/// 用于ASP.NET Web应用程序中对数据进行分页的的服务器控件。
/// </summary>
/// <remarks>不同于DataGrid控件,AspNetPager分页控件本身并不显示任何数据,而只显示页导航元素,数据在页面上的显示方式与该控件无关。该控件可以为DataGrid、DataList、Repeater以及自定义控件进行分页,配合Sql存储过程,分页性能较使用DataGrid分页有明显提升,尤其是当数据量大时性能可提升数倍!
/// <p>AspNetPager 2.0 中新增了通过Url来分页的功能,这使得访问者可以直接输入相应的Url来访问任何页面,并且搜索引擎也可以直接检索每个页面,若使用DataGrid的分页功能,这是无法实现的。</p>
/// <p>要使用 AspNetPager 分页控件,必须最少指定它的 <see cref="RecordCount"/> 属性,指定并编写 <see cref="PageChanged"/> 事件的处理程序。
/// <see cref="RecordCount"/> 属性指定要分页的所有数据的总项数,若未指定该值或该值小于等于 <see cref="PageSize"/> ,则AspNetPager控件不会显示任何内容。
/// 若未指定并编写 <see cref="PageChanged"/> 事件处理程序,则当用户点击页导航元素或在页索引文本框中手式输入页索引并提交时AspNetPager不会跳转到指定的页。
/// AspNetPager控件的分页方法和DataGrid基本相同,即在它的 <see cref="PageChanged"/> 事件处理程序中将传递事件数据的 <see cref="PageChangedEventArgs"/> 的 <see cref="PageChangedEventArgs.NewPageIndex"/>值赋给 AspNetPager的 <see cref="CurrentPageIndex"/>属性,然后重新将新的数据与数据显示控件绑定。 </p></remarks>
/// <example>以下示例说明如何用AspNetPager对DataGrid进行分页。
/// <code><![CDATA[
///<%@ Page Language="C#"%>
///<%@ Import Namespace="System.Data"%>
///<%@Import Namespace="System.Data.SqlClient"%>
///<%@Import Namespace="System.Configuration"%>
///<%@Register TagPrefix="Webdiyer" Namespace="Wuqi.Webdiyer" Assembly="aspnetpager"%>
///<HTML>
///<HEAD>
///<TITLE>Welcome to Webdiyer.com </TITLE>
/// <script runat="server">
/// SqlConnection conn;
/// SqlCommand cmd;
/// void Page_Load(object src,EventArgs e)
/// {
/// conn=new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
/// if(!Page.IsPostBack)
/// {
/// cmd=new SqlCommand("GetNews",conn);
/// cmd.CommandType=CommandType.StoredProcedure;
/// cmd.Parameters.Add("@pageindex",1);
/// cmd.Parameters.Add("@pagesize",1);
/// cmd.Parameters.Add("@docount",true);
/// conn.Open();
/// pager.RecordCount=(int)cmd.ExecuteScalar();
/// conn.Close();
/// BindData();
/// }
/// }
///
/// void BindData()
/// {
/// cmd=new SqlCommand("GetNews",conn);
/// cmd.CommandType=CommandType.StoredProcedure;
/// cmd.Parameters.Add("@pageindex",pager.CurrentPageIndex);
/// cmd.Parameters.Add("@pagesize",pager.PageSize);
/// cmd.Parameters.Add("@docount",false);
/// conn.Open();
/// dataGrid1.DataSource=cmd.ExecuteReader();
/// dataGrid1.DataBind();
/// conn.Close();
/// pager.CustomInfoText="记录总数:<font color="blue"><b>"+pager.RecordCount.ToString()+"</b></font>";
/// pager.CustomInfoText+=" 总页数:<font color="blue"><b>"+pager.PageCount.ToString()+"</b></font>";
/// pager.CustomInfoText+=" 当前页:<font color="red"><b>"+pager.CurrentPageIndex.ToString()+"</b></font>";
/// }
/// void ChangePage(object src,PageChangedEventArgs e)
/// {
/// pager.CurrentPageIndex=e.NewPageIndex;
/// BindData();
/// }
/// </script>
/// <meta http-equiv="Content-Language" content="zh-cn">
/// <meta http-equiv="content-type" content="text/html;charset=gb2312"><