Asp.net url分页的用户控件

asp.net|分页|控件

最近做一个相册程序频繁的需要分页,所以就想写一个用户控件出来。
  
  代码如下:
  
  AutoPage.ascx页面
  
  <%@ Control Language="c#" AutoEventWireup="false" Codebehind="AutoPage.ascx.cs" Inherits="album.AutoPage" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
  <table border="0" cellpadding="0" cellspacing="0">
   <tr>
   <td valign="middle" height="30">共<asp:label id="lb_ItemCount" ForeColor="Red" runat="server"></asp:label>条记录 </td>
   <td valign="middle" height="30"><asp:hyperlink id="hpl_First" runat="server">首页</asp:hyperlink> </td>
   <td valign="middle" height="30"><asp:hyperlink id="hpl_Prev" runat="server">上页</asp:hyperlink> </td>
   <td valign="middle" height="30">当前<asp:label id="lb_CurrentPage" runat="server"></asp:label>页/共<asp:label id="lb_PageCount" runat="server"></asp:label>页 </td>
   <td valign="middle" height="30"><asp:hyperlink id="hpl_Next" runat="server">下页</asp:hyperlink> </td>
   <td valign="middle" height="30"><asp:hyperlink id="hpl_Last" runat="server">末页</asp:hyperlink> </td>
   <td valign="middle" height="30"><asp:textbox id="txb_Page" runat="server" Width="32px" BorderStyle="Solid" BorderWidth="1px"
   BorderColor="Silver"></asp:textbox></td>
   <td valign="middle" height="30"><asp:ImageButton id="btn_go" runat="server" ImageUrl="album_images/go.gif"></asp:ImageButton></td>
   <td valign="middle" height="30"><asp:label id="lb_url" runat="server" Visible="False"></asp:label><asp:Label id="lb_Params" runat="server" Visible="False"></asp:Label></td>
   </tr>
  </table>
  
  AutoPage.ascx.cs页面
  
  namespace album
  {
   using System;
   using System.Data;
   using System.Drawing;
   using System.Web;
   using System.Web.UI.WebControls;
   using System.Web.UI.HtmlControls;
   using System.Data.SqlClient;
  
   /// <summary>
   /// UC 的摘要说明。
   /// </summary>
   public class AutoPage : System.Web.UI.UserControl
   {
   protected System.Web.UI.WebControls.HyperLink hpl_First;
   protected System.Web.UI.WebControls.HyperLink hpl_Prev;
   protected System.Web.UI.WebControls.HyperLink hpl_Next;
   protected System.Web.UI.WebControls.Label lb_CurrentPage;
   protected System.Web.UI.WebControls.Label lb_PageCount;
   protected System.Web.UI.WebControls.HyperLink hpl_Last;
   public int pagesize;
   public string PageP;
   protected System.Web.UI.WebControls.TextBox txb_Page;
   protected System.Web.UI.WebControls.Label lb_url;
   protected System.Web.UI.WebControls.Label lb_ItemCount;
   public string url;
   protected System.Web.UI.WebControls.Label lb_Params;
   protected System.Web.UI.WebControls.ImageButton btn_go;
   public string Params;
  
   private void Page_Load(object sender, System.EventArgs e)
   {
  
   }
  
   public PagedDataSource databind(DataTable dt)
   {
   lb_url.Text = url;
   lb_Params.Text = Params;
   //创建分页类
   PagedDataSource objPage = new PagedDataSource();
   //设置数据源
   objPage.DataSource = dt.DefaultView;
   //允许分页
   objPage.AllowPaging = true;
   //设置每页显示的项数
   objPage.PageSize = pagesize;
   //设置当前页的索引
   int CurPage=1;
   try
   {
   CurPage = Convert.ToInt32(PageP);
   if (CurPage<1 CurPage>objPage.PageCount)
   {
   Response.Redirect(url+"?page=1"+Params);
   }
   }
   catch
   {
   Response.Redirect(url+"?page=1"+Params);
   }
   objPage.CurrentPageIndex = CurPage-1;
   //显示状态信息
   lb_ItemCount.Text = dt.Rows.Count.ToString();
   lb_CurrentPage.Text = CurPage.ToString();
   lb_PageCount.Text =objPage.PageCount.ToString();
  
   //如果当前页面不是首页
   if (!objPage.IsFirstPage)
   {
   hpl_Prev.NavigateUrl=url + "?Page=" + Convert.ToString(CurPage-1)+Params;
   hpl_First.NavigateUrl=url + "?Page=1"+Params;
   }
   //如果当前页面不是最后一页
   if (!objPage.IsLastPage)
   {
   hpl_Next.NavigateUrl=url+ "?Page=" + Convert.ToString(CurPage+1)+Params;
   hpl_Last.NavigateUrl=url + "?Page=" +objPage.PageCount.ToString()+Params;
   }
   return objPage;
   }
  
  
   #region Web 窗体设计器生成的代码
   override protected void OnInit(EventArgs e)
   {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
   }
  
   /// <summary>
   /// 设计器支持所需的方法 - 不要使用代码编辑器
   /// 修改此方法的内容。
   /// </summary>
   private void InitializeComponent()
   {
   this.btn_go.Click += new System.Web.UI.ImageClickEventHandler(this.btn_go_Click);
   this.Load += new System.EventHandler(this.Page_Load);
  
   }
   #endregion
  
   private void btn_go_Click(object sender, System.Web.UI.ImageClickEventArgs e)
   {
   Response.Redirect(lb_url.Text+"?Page="+txb_Page.Text+lb_Params.Text);
   }
  
  
   }
  }
  
  调用的时候需要设置几个参数pagesize(每页显示数据个数),PageP(传递的分页参数),ParmP(其他的Request.QureyString参数),url(页面地址)
  
  绑定的时候只需要把控件的DataSource=AutoPage1.databind(DataTable变量)

时间: 2024-10-30 16:44:40

Asp.net url分页的用户控件的相关文章

在asp.net中为Web用户控件添加属性和事件

asp.net|web|控件 在asp.net中为Web用户控件添加属性和事件 在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功. 但是,技术是在不断的发展着,引

[ASP.NET开发系列]在用户控件中添加属性

asp.net|控件 在WEB开发中经常有一些代码是在很多地方重复出现的,象导航栏.用户登录/注册和首页上面的一些固定栏目等.这些可重用的代码我们可以把它写成一个通用模块供需要的地方来引用,这样做即节省了开发时间还方便以后的维护. 在ASP.NET的web编程中提供了一种叫做"用户控件"可以帮助我们完成这种做法,其文件扩展名是".ascx",由于ascx文件是用来插入ASPX页面中使用的,而一个ASPX窗体只能包含一个<form>标志,所以ascx用户控

关于ASP.NET2.0 中的用户控件编程使用

asp.net|编程|控件 今天用了一下2.0中的用户控件,发现使用编程方式使用用户控件,跟1.X 中截然不同. 1.首先,要在所要使用的Page 头部声明引用.如下: <%@ Reference Control="../Controls/AlbumEditor.ascx" %> 2.在后置代码里,从"ASP"空间中就可以找到此控件的类引用了,不过还需要事例一下.-_-! 不明白设计者为什么要这么做,还不如1.1 那样直观.如下:  ASP.Contro

为asp.net中的Web用户控件添加属性和事件

asp.net|web|控件      在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功.         但是,技术是在不断的发展着,引用某位Net专家的话讲―

ASP.NET MVC加载用户控件后如何获取其内控件值或赋值

有网友看了这篇<ASP.NET MVC加载ASCX之后,并为之赋值>http://www.cnblogs.com/insus/p/3643254.html 之后,问及Insus.NET,不想在控件制器内进行赋值,而是想在视图中使用jQuery来获取用户控件内的控件值或是为它们赋值.那需要怎样来做呢? 下面Insus.NET花上少少时间,做个简单的例子,演示与分享实现的方法. 实现之前,先修改一下AscxUtility.cs这个类中的 public static HtmlString Rende

asp.net动态加载用户控件,关于后台添加、修改的思考_实用技巧

看下下面这个典型的后台(比较粗糙):说实在,我很厌倦全部用.aspx文件去做,比如"友情连接"这个模块,就有"添加友情连接""修改友情连接""友情连接列表",简单的话,可以把"添加""修改"合成一个文件.每次都去建立一个.aspx文件.我现在的想法是用"用户控件+配置文件"去实现,虽然文件数目可能不会少很多.但在编程到一定地步,我想大家会有跟我一样的想法. 首先需要涉

ASP.NET动态加载用户控件的实现方法_实用技巧

第一步:例如用户控件放在MyList.Ascx,然后其Control指令是: 复制代码 代码如下: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="ViewComment.ascx.cs" Inherits="Control_ViewComment"%> 这时候已经有了Inherits,自带了ClassName就是其名称,如果没有,则必须创建Cl

Asp.net 2.0为用户控件添加event

使用user control的好处自不必说. 但是作为一个控件,虽然实际上其中可能包含很多控件(asp.net服务端控件),但是一旦在页面中注册使用,它就表现为一个独立的控件,也就是说在编辑阶段,其包含的控件我们是访问不到的,或者说不能对其包含的控件进行控制. 这个时候,就要通过为控件添加属性和事件来提供对外的接口,使得我们可以间接的控制其"子控件":用属性来控制其子控件的状态,而我们可以在外部访问并改变属性值,从而达到间接控制子控件的目的:当然如果子控件发生了什么事件,我们要想知道,

在ASP.NET中使用用户控件

asp.net|控件 [摘要]ASP.NET中提供的用户控件,可以解决ASP中无法解决的代码重用问题,更方便了调试工作中的错误检查.本文通过用户控件实现方法讲解和一个用户控件例程的实现,进一步验证了利用用户控件解决代码重用的可行性和有效性. [关键字]代码重用.用户控件.@Register指令 ASP.NET提供了比传统ASP更好的代码分离方案.在传统的ASP中,要将用Server. Execute执行的ASP文件或事务对象组件的代码分离开,一般只能将代码分离成几个文件,然后使用"include