`
netxdiy
  • 浏览: 681713 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义ascx文件来控制分页(-)(downmoon)

 
阅读更多

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>&nbsp;
<asp:linkbutton id="PrevPage" runat="server">[上页]</asp:linkbutton>&nbsp;
<asp:linkbutton id="NextPage" runat="server">[下页]</asp:linkbutton>&nbsp;
<asp:linkbutton id="LastPage" runat="server">[末页]</asp:linkbutton>&nbsp;
<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>&nbsp;
<asp:button id="NewPageGo" runat="server" Text="Go" CssClass="input1"></asp:button>&nbsp;</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
}
}

分享到:
评论

相关推荐

    Net 自定义分页控件(.ascx)

    C#编写的ascx控件,分页样式可以编辑,满足用户需求 有数字索引,如果你在使用中发现bug可以给我写信 我的邮箱是hbtsbht@126.com

    将ASPX文件转换为ASCX文件(用户控件)

    aspx是页面文件ascx是用户控件,用户控件必须嵌入到aspx中才能使用。ascx是用户控件,相当于模板其实ascx你可以理解为Html里的一部分代码,只是嵌到aspx里而已,因为aspx内容多的时候实在是不太好管理,而且你把公共的...

    ascx文件[文].pdf

    ascx文件[文].pdf

    asp.net web页面自定义分页控件使用详解

    这几天学习了一下自定义分页控件,现将实现方法记录下来,亲测可以实现: 1.首先创建一个.ascx文件,命名为TurnPage,然后在里面写控件前台展示的界面: 2.然后在TurnPage.ascx.cs里面写相应的后台代码,代码如下...

    给自定义Web控件添加事件(前后台代码)

    ------------myRegister1.ascx前台代码----------- 代码如下: [removed][removed] [removed] function Register() { if ($(‘#myRegister1_txtUserName’).val() == ”) { $(‘#spanUserName...

    MVC分页详解(包括整个流程步骤,代码与注解)

    2、在控制器公用方法中添加分页方法BaseController.cs 3、写一个一般处理程序Pager.ascx 4、分页模板 _Pager.cshtml(View/Shared中) 5、View视图以后分页调用这个模板就好了 6、CSS分页在右下角显示 7、Controller...

    自定义用户控件uc1.ascx

    自定义用户控件的使用,加内部注释。很简单的东西,一看就懂

    一个.net分页控件

    .net分页控件 一个用ascx方式做的分页控件,支持外观

    动态加载带参数的ASCX用户控件

    通过JQUERY或页面后台处理程序加载带参数的ASCX用户控件

    采用强大的FCK编辑器文章管理系统

    1.文章栏目二级分类,随意修改,管理员分级管理 2.采用强大的FCK编辑器输入文章 3.不存在任何文章内容不能分段,不出空格...安装使用方便,你只需把头部文件 WebTop.ascx 和底部文件 WebBottom.ascx 换成你的就可以了

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    4-11.aspx 使用Server对象来获取文件路径。 4-12.aspx 使用Server对象对字符进行编码。 4-13.aspx 使用Server对象进行解码。 4-14.aspx 向客户机器写入Cookie。 4-15.aspx 读取Cookie。 ...

    ascx使用办法:属性、方法和事件

    子,你可以看看 ...usc/dg.ascx &lt;%@ Control Language="c#" AutoEventWireup="false" Codebehind="dg.ascx.cs" Inherits="startmssql.ucs.dg" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%&gt; ...

    js获取.aspx页面里面的服务器控件和.ascx中的服务器控件值

    用js获取.ascx控件中服务器控件值时首先要得到服务器控件的ClientID再加上.ascx页面里面的服务器空间ID并用"_"连接

    ajax实现完美分页

    基于jquery框架。... ~/Usercontrol/Pager.ascx" tagName="mypage"/&gt; &lt;/pages&gt;&lt;/system.web&gt;然后页面中).....ajax端数据库替换为自己的数据库。另外页面显示部分用的是jquery静态模板。都在压缩包里了。

    .net C# 分页控件

    一般C#分页都写在页面类里,每个页面写一次,不能做到一改全改,本例将C#分页写在控件里。如果想改分页样式,只改一个控件即可。控件:devidePage.ascx 例子:glzd_list_all.aspx 使用时,动态引用控件,并给把分页...

    button.ascx

    Button 按键;Button 按键;Button 按键;Button 按键;

    登录或是提交的验证码控件ascx

    添加到vs中用asp.net开发的网站中就可以使用的验证控件……

    asp.net自定义分页控件示例

    一、.ascx页面 代码如下:&lt;&#37;@ Control Language=”C#” AutoEventWireup=”true” CodeBehind=”Pagination.ascx.cs” Inherits=”IOCS.WEB.UserControl.Pagination” %&gt;&lt;link href=”../Content/Css/Pager...

    奇文WAP插件

    奇文WAP插件 Sub Page_Load(ByVal sender As System.... '比如:风格文件根目录为/skin/default,而你的ascx文件是放在/skin/default/book/index.ascx,则需要将index.ascx换成book/index.ascx End Sub &lt;/script&gt;

Global site tag (gtag.js) - Google Analytics