AspNetPager分页控件--使用方法 1
点击次数:29 次 发布日期:2008-11-26 11:18:33 作者:源代码网
|
源代码网推荐 //若需修改并重新编译该控件,请保留完整的源代码的版权信息! 源代码网推荐 //有关控件升级及新控件发布信息,请留意 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"> 源代码网推荐 /// <META NAME="Generator" CONTENT="EditPlus"> 源代码网推荐 /// <META NAME="Author" CONTENT="Webdiyer(yhaili@21cn.com)"> 源代码网推荐 /// </HEAD> 源代码网推荐 /// <body> 源代码网推荐 /// <form runat="server" ID="Form1"> 源代码网推荐 /// <asp:DataGrid id="dataGrid1" runat="server" /> 源代码网推荐 /// <Webdiyer:AspNetPager id="pager" 源代码网推荐 /// runat="server" 源代码网推荐 /// PageSize="8" 源代码网推荐 /// NumericButtonCount="8" 源代码网推荐 /// ShowCustomInfoSection="left" 源代码网推荐 /// PagingButtonSpacing="0" 源代码网推荐 /// ShowInputBox="always" 源代码网推荐 /// CssClass="mypager" 源代码网推荐 /// HorizontalAlign="right" 源代码网推荐 /// OnPageChanged="ChangePage" 源代码网推荐 /// SubmitButtonText="转到" 源代码网推荐 /// NumericButtonTextFormatString="[{0}]"/> 源代码网推荐 /// </form> 源代码网推荐 /// </body> 源代码网推荐 ///</HTML> 源代码网推荐 /// ]]> 源代码网推荐 /// </code> 源代码网推荐 /// <p>下面是该示例所用的Sql Server存储过程:</p> 源代码网推荐 /// <code> 源代码网推荐 /// <![CDATA[ 源代码网推荐 ///CREATE procedure GetNews 源代码网推荐 /// (@pagesize int, 源代码网推荐 /// @pageindex int, 源代码网推荐 /// @docount bit) 源代码网推荐 /// as 源代码网推荐 /// set nocount on 源代码网推荐 /// if(@docount=1) 源代码网推荐 /// select count(id) from news 源代码网推荐 /// else 源代码网推荐 /// begin 源代码网推荐 /// declare @indextable table(id int identity(1,1),nid int) 源代码网推荐 /// declare @PageLowerBound int 源代码网推荐 /// declare @PageUpperBound int 源代码网推荐 /// set @PageLowerBound=(@pageindex-1)*@pagesize 源代码网推荐 /// set @PageUpperBound=@PageLowerBound+@pagesize 源代码网推荐 /// set rowcount @PageUpperBound 源代码网推荐 /// insert into @indextable(nid) select id from news order by addtime desc 源代码网推荐 /// select O.id,O.source,O.title,O.addtime from news O,@indextable t where O.id=t.nid 源代码网推荐 /// and t.id>@PageLowerBound and t.id < = @PageUpperBound order by t.id 源代码网推荐 /// end 源代码网推荐 /// set nocount off 源代码网推荐 ///GO 源代码网推荐 /// ]]> 源代码网推荐 /// </code></example> 源代码网推荐 #endregion 源代码网推荐 [DefaultProperty("PageSize")] 源代码网推荐 [DefaultEvent("PageChanged")] 源代码网推荐 [ParseChildren(false)] 源代码网推荐 [PersistChildren(false)] 源代码网推荐 [Description("专用于ASP.Net Web应用程序的分页控件")] 源代码网推荐 [Designer(typeof(PagerDesigner))] 源代码网推荐 [ToolboxData("<{0}:AspNetPager runat=server></{0}:AspNetPager>")] 源代码网推荐 public class AspNetPager:Panel,INamingContainer,IPostBackEventHandler,IPostBackDataHandler 源代码网推荐 { 源代码网推荐 private string cssClassName; 源代码网推荐 private string urlPageIndexName="page"; 源代码网推荐 private bool urlPaging=false; 源代码网推荐 private string inputPageIndex; 源代码网推荐 private string currentUrl=null; 源代码网推荐 private NameValueCollection urlParams=null; #region Properties #region Navigation Buttons /// <summary> 源代码网推荐 /// 获取或设置一个值,该值批示当鼠标指针悬停在导航按钮上时是否显示工具提示。 源代码网推荐 /// </summary> 源代码网推荐 [Browsable(true), 源代码网推荐 Category("导航按钮"), DefaultValue(true), Description("指定当鼠标停留在导航按钮上时,是否显示工具提示")] 源代码网推荐 public bool ShowNavigationToolTip 源代码网推荐 { 源代码网推荐 get 源代码网推荐 { 源代码网推荐 object obj=ViewState["ShowNavigationToolTip"]; 源代码网推荐 return (obj==null)?true:(bool)obj; 源代码网推荐 } 源代码网推荐 set 源代码网推荐 { 源代码网推荐 ViewState["ShowNavigationToolTip"]=value; 源代码网推荐 } 源代码网推荐 } /// <summary> 源代码网推荐 /// 获取或设置导航按钮工具提示文本的格式。 源代码网推荐 /// </summary> 源代码网推荐 [Browsable(true), 源代码网推荐 Category("导航按钮"), 源代码网推荐 DefaultValue("转到第{0}页"), 源代码网推荐 Description("页导航按钮工具提示文本的格式")] 源代码网推荐 public string NavigationToolTipTextFormatString 源代码网推荐 { 源代码网推荐 get 源代码网推荐 { 源代码网推荐 object obj=ViewState["NavigationToolTipTextFormatString"]; 源代码网推荐 return (obj==null)?"转到第{0}页":(string)obj; 源代码网推荐 } 源代码网推荐 set 源代码网推荐 { 源代码网推荐 string tip=value; 源代码网推荐 if(tip.Trim().Length<1&&tip.IndexOf("{0}")<0) 源代码网推荐 tip="{0}"; 源代码网推荐 ViewState["NavigationToolTipTextFormatString"]=tip; 源代码网推荐 } 源代码网推荐 } /// <summary> 源代码网推荐 /// 获取或设置一个值,该值指示是否将页索引按钮用中文数字代替。 源代码网推荐 /// </summary> 源代码网推荐 /// <remarks> 源代码网推荐 /// 将该值设为true并且未使用图片按钮时,页索引按钮中的数值1、2、3等将会被中文字符一、 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
