1、moonPage.ascx
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="moonPage.ascx.cs" Inherits="firstcs_03.moonPage" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%
>
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="98%" border="0">
<TR>
<TD align="right"><asp:linkbutton id="FirstPage" runat="server">[首页]</asp:linkbutton>
<asp:linkbutton id="PrevPage" runat="server">[上页]</asp:linkbutton>
<asp:linkbutton id="NextPage" runat="server">[下页]</asp:linkbutton>
<asp:linkbutton id="LastPage" runat="server">[末页]</asp:linkbutton>
<asp:literal id="Literal1" runat="server" Text="转到第"></asp:literal><asp:textbox id="NewPageIndex" runat="server" Width="31px" CssClass="input1"></asp:textbox><asp:literal id="Literal2" runat="server" Text="页"></asp:literal>
<asp:button id="NewPageGo" runat="server" Text="Go" CssClass="input1"></asp:button> </TD>
</TR>
</TABLE>
2、moonPage.ascx.cs
namespace firstcs_03
{
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>
///moonPage 的摘要说明。
/// </summary>
public class moonPage : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.LinkButton FirstPage;
protected System.Web.UI.WebControls.LinkButton PrevPage;
protected System.Web.UI.WebControls.LinkButton NextPage;
protected System.Web.UI.WebControls.LinkButton LastPage;
protected System.Web.UI.WebControls.Literal Literal1;
protected System.Web.UI.WebControls.TextBox NewPageIndex;
protected System.Web.UI.WebControls.Literal Literal2;
protected System.Web.UI.WebControls.Button NewPageGo;
protected int currentpage;
protected int pagesize;
protected string proc;
protected System.Web.UI.WebControls.DataGrid datagrid;
#region 自定义
public int _CurrentPage
{
get
{
return currentpage;
}
set
{
currentpage = value;
}
}
public int _pageSize
{
get
{
return pagesize;
}
set
{
pagesize = value;
}
}
public string _proc
{
get
{
return proc;
}
set
{
proc = value;
}
}
public DataGrid _datagrid
{
get
{
return datagrid;
}
set
{
datagrid = value;
}
}
protected int rowcount;
#endregion
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
using(SqlConnection conn = new SqlConnection("uid=sa;pwd=sa;server=localhost;initial catalog=pubs;timeout=90"))
{
SqlCommand cmd = new SqlCommand("select count(*) as expr1 from authors",conn);
cmd.Connection.Open();
rowcount = (int)cmd.ExecuteScalar();
cmd.Connection.Close();
ViewState["rowscount"] = rowcount;
}
ViewState["currentpage"] = currentpage;
FillGrid(proc,currentpage,pagesize,datagrid);
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
///设计器支持所需的方法 - 不要使用代码编辑器
///修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.FirstPage.Click += new System.EventHandler(this.FirstPage_Click);
this.NextPage.Click += new System.EventHandler(this.NextPage_Click);
this.NewPageGo.Click += new System.EventHandler(this.NewPageGo_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void FillGrid(string proc,int currentpage,int pagesize,DataGrid datagrid)
{
using(SqlConnection conn = new SqlConnection("Uid=sa;pwd=sa;server=localhost;initial catalog=pubs;timeout=90"))
{
SqlCommand cmd = new SqlCommand(proc,conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CurrentPage",currentpage);
cmd.Parameters.Add("@PageSize",pagesize);
cmd.Connection.Open();
SqlDataReader sdr = cmd.ExecuteReader();
datagrid.DataSource = sdr;
datagrid.DataBind();
sdr.Close();
cmd.Connection.Close();
}
}
//首页
private void FirstPage_Click(object sender, System.EventArgs e)
{
//disabled首页按钮和上一页按钮
FirstPage.Enabled = false;
PrevPage.Enabled = false;
currentpage = 0;
ViewState["currentpage"] = currentpage;
FillGrid(proc,currentpage,pagesize,datagrid);
//如果不止一页
if((int)ViewState["rowscount"]>((int)ViewState["currentpage"]+1)*pagesize)
{
NextPage.Enabled = true;
}
if((int)ViewState["rowscount"]>((int)ViewState["currentpage"]+1)*pagesize)
{
LastPage.Enabled = true;
}
}
//上一页
private void PrevPage_Click(object sender, System.EventArgs e)
{
NextPage.Enabled = true;
LastPage.Enabled = true;
currentpage = (int)ViewState["currentpage"]-1;
ViewState["currentpage"] = currentpage;
FillGrid(proc,currentpage,pagesize,datagrid);
//如果到首页则disabled首页和上一页按钮
if((int)ViewState["currentpage"]==0)
{
PrevPage.Enabled = false;
FirstPage.Enabled = false;
//return;
}
}
//下一页
private void NextPage_Click(object sender, System.EventArgs e)
{
ViewState["currentpage"] = (int)ViewState["currentpage"]+1;
currentpage = (int)ViewState["currentpage"];
FillGrid(proc,currentpage,pagesize,datagrid);
PrevPage.Enabled = true;
FirstPage.Enabled = true;
//如果已经到了最后一页
if(((int)ViewState["currentpage"]+1)*pagesize>(int)ViewState["rowscount"])
{
NextPage.Enabled = false;
LastPage.Enabled = false;
}
}
//末页
private void LastPage_Click(object sender, System.EventArgs e)
{
LastPage.Enabled = false;
NextPage.Enabled = false;
ViewState["currentpage"] = (int)Math.Ceiling((int)ViewState["rowscount"]/pagesize);
currentpage = (int)ViewState["currentpage"];
FillGrid(proc,currentpage,pagesize,datagrid);
//如果有不止一页的纪录
if((int)ViewState["currentpage"]>1)
{
FirstPage.Enabled = true;
PrevPage.Enabled = true;
}
//如果只有一页的纪录
else
{
FirstPage.Enabled = false;
PrevPage.Enabled = false;
}
}
//跳转
private void NewPage_Go(string i)
{
try
{
int PageIndex = Int32.Parse(i);
if (PageIndex<=0)
{
PageIndex = 0;
}
else
{
if(PageIndex>(int)Math.Ceiling((int)ViewState["rowscount"]/pagesize))
{
PageIndex = (int)Math.Ceiling((int)ViewState["rowscount"]/pagesize);
}
else
{
PageIndex--;
}
}
//简单起见,将所有的linkbutton全部改为enable=true
FirstPage.Enabled = true;
NextPage.Enabled = true;
LastPage.Enabled = true;
PrevPage.Enabled = true;
ViewState["currentpage"] = PageIndex;
FillGrid(proc,(int)ViewState["currentpage"],pagesize,datagrid);
}
catch(Exception)
{
return;
}
}
private void NewPageGo_Click(object sender, System.EventArgs e)
{
NewPage_Go(NewPageIndex.Text.Trim());
}
}
}
引用页面:
page_Ascx.aspx:
<%@ Page language="c#" Codebehind="page_Ascx.aspx.cs" AutoEventWireup="false" Inherits="firstcs_03.page_Ascx" %>
<%@ Register TagPrefix="uc1" TagName="moonPage" Src="moonPage.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>page_Ascx</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5
">
<link href="css.css" _fcksavedurl=""css.css"" _fcksavedurl=""css.css"" rel="stylesheet" type="text/css">
</HEAD>
<body>
<form id="PageForm" method="post" runat="server">
<asp:DataGrid id="DataGrid1" runat="server" AllowCustomPaging="True" AllowPaging="True">
<PagerStyle Visible="False"></PagerStyle>
</asp:DataGrid><FONT face="宋体"><BR>
</FONT>
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
Repeater控件的标头模版<br>
</HeaderTemplate>
<ItemTemplate>
名称:<%# DataBinder.Eval(Container.DataItem,"ProductName") %><br>
单价:<%# DataBinder.Eval(Container.DataItem,"UnitPrice") %><br>
</ItemTemplate>
<AlternatingItemTemplate>
名称:<font color="red"><%# DataBinder.Eval(Container.DataItem,"ProductName") %></font><br>
单价:<font color="red"><%# DataBinder.Eval(Container.DataItem,"UnitPrice") %></font><br>
</AlternatingItemTemplate>
<SeparatorTemplate>
<hr>
</SeparatorTemplate>
<FooterTemplate>
Repeater控件的页脚模版
</FooterTemplate>
</asp:Repeater>
<asp:Panel id="Panel1" runat="server" Width="634px">
<uc1:moonPage id="pc" runat="server"></uc1:moonPage>
</asp:Panel><FONT face="宋体"></FONT>
</form>
</body>
</HTML>
page_Ascx.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace firstcs_03
{
/// <summary>
/// page_Ascx 的摘要说明。
/// </summary>
public class page_Ascx : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Panel Panel1;
protected System.Web.UI.WebControls.Repeater Repeater1;
protected firstcs_03.moonPage pc;
private void Page_Load(object sender, System.EventArgs e)
{
//if(!IsPostBack)
//{
pc._CurrentPage = 0;
pc._datagrid = DataGrid1;
pc._pageSize =10;
pc._proc = "Page_Change";
//pc._CurrentPage = 0;
//pc._datagrid = (DataGrid)Repeater1;
//pc._pageSize =7;
//pc._proc = "Page_Change";
//}
}
#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
}
}
分享到:
相关推荐
首先,我们来看`ViewChapter.ascx`和`ViewChapterA.aspx`这两个文件。`.ascx`文件是ASP.NET中的用户控件,它定义了分页组件的HTML结构和样式。`ViewChapterA.aspx`可能是主页面,它会包含`ViewChapter.ascx`控件,...
本话题将深入探讨如何创建一个C#编写的自定义分页控件(ascx),以及如何利用它来实现灵活的分页功能。 首先,`PageCoursControl.ascx`是一个用户控件(User Control)文件,它是ASP.NET中的一种组件,用于封装和...
而LBPagination.ascx.cs文件则是这个控件的后端逻辑,处理用户交互、计算分页信息以及与数据库的交互。 在修订过程中,开发者修复了之前的BUG。这些BUG可能包括但不限于以下几种情况:页面跳转错误、分页信息显示不...
`cutPage.ascx`是我们的自定义分页控件的定义文件,它包含HTML标记和服务器端控件,可以视为一个可重用的UI组件。 2. **代码-behind文件**:`cutPage.ascx.cs`是对应的代码-behind文件,用于实现逻辑功能。在这里,...
- 压缩包中的“web分页自定义控件”可能是实现了一个自定义分页控件,它可能包括了分页按钮、当前页数显示、总页数显示等功能。 - 这个控件可能会处理分页请求,改变数据源的查询范围,以及更新UI来显示新的数据。...
下载后,你可以通过阅读代码和使用说明来学习如何构建自定义分页控件。如果遇到问题,可以联系作者提供的QQ获取帮助。 总之,创建自定义ASP.NET分页控件是一项涉及多方面技能的任务,包括控件开发、事件处理、数据...
- **用户控件**:简单的自定义控件,通常是在ASPX页面中通过.ascx文件定义的控件。 - **自定义控件**:更加复杂,通常需要通过C#或VB.NET代码编写,并继承自`System.Web.UI.Control`或`System.Web.UI.WebControls....
自定义分页允许我们根据需要控制每页显示的数据量,从而优化性能。 - 实现步骤: 1. 在后台代码中,需要编写SQL查询,指定一个范围(例如:`OFFSET start ROWS FETCH NEXT count ROWS ONLY`)来获取特定页面的...
然而,系统默认的GridView功能有限,不能满足所有需求,例如,它没有内置的自定义分页功能以及列宽可拖动调整。针对这些需求,开发者常常需要进行自定义扩展。 标题"GridView自定义分页及可拖动改变列宽源码"涉及的...
自定义用户控件(User Control)是通过`.ascx`文件创建的,这种文件是ASP.NET中的用户界面元素。`uc1.ascx`就是一个这样的文件,它包含HTML、服务器控件和代码,可以作为一个独立的组件在多个页面中复用。创建自定义...
分页控件主要由两个部分组成:`.ascx`页面和`.ascx.cs`文件。这两个部分分别负责界面展示和业务逻辑处理。 ##### 1.1 .ascx 页面 这段代码定义了一个用户控件(User Control),它包含了基本的分页控件布局: ```...
aspx是页面文件ascx是用户控件,用户控件必须嵌入到aspx中才能使用。ascx是用户控件,相当于模板其实ascx你可以理解为Html里的一部分代码,只是嵌到aspx里而已,因为aspx内容多的时候实在是不太好管理,而且你把公共的...
在使用`ascx`文件时,需要在`aspx`页面的头部通过`@Register`指令来注册用户控件,指定一个标签前缀(TagPrefix)和控件名称(TagName),以及`ascx`文件的路径。然后在页面中,通过指定的标签前缀和名称来实例化这...
- **自定义样式**:通过CSS控制分页按钮的样式,使其符合网站设计风格。 - **服务器端/客户端分页**:可以根据性能需求选择在服务器端还是客户端进行数据分页。 - **跳转页数**:允许用户直接输入页码或通过快捷...
本例中的"DividedPageController.ascx"和"DividedPageController.ascx.cs"正是一个自定义的分页控件,用于在页面上显示分页信息。 1. **自定义分页控件的创建**: - `DividedPageController.ascx`是用户控件(User...
- 自定义控件是通过编译为`.DLL`文件的类来实现的,这些类继承自`System.Web.UI.Control`或其派生类。它们可以包含在工具箱中,便于拖放到设计视图中使用。 - 自定义控件提供了更高级别的自定义能力,包括绘制自己...
- 将创建好的Web用户控件文件(通常为.ascx和.cs文件)拷贝到之前创建的 `UserControls` 文件夹中。 - 通过这种方式,可以在SharePoint环境中轻松地访问这些自定义控件。 #### 四、注册自定义Web控件 1. **添加...
此项目“一个.net分页控件”提供了一个自定义的ASCX(用户控件)实现,它允许开发者在网页上轻松添加分页功能,并自定义其外观。 首先,我们需要理解什么是ASCX用户控件。ASCX是ASP.NET中的一个文件扩展名,用于...
- **Bin**:编译后的DLL文件,包含应用程序引用的库和自定义组件。 通过对这些文件的分析,我们可以推测这是一个包含数据展示和分页功能的ASP.NET Web应用程序实例。开发者通过ViewState来维护分页状态,从而实现了...