当前位置:文档之家› asp分页控件实例超详细简单

asp分页控件实例超详细简单

asp分页控件实例超详细简单
asp分页控件实例超详细简单

由于项目开发中需要用到分页的功能,所以自己就研究并写了一个https://www.doczj.com/doc/9517397020.html,分页控件,其中的实现全部是个人理解并进行编写的代码,而且我也写了一个事例供大家参考(没有做任何美工的处理)!希望能对大家有所帮助!在文章最后我会附上全部代码的链接供大家下载,并可以继续优化!

运行后的效果如下:

其中控件的核心就是定义一个委托,并开放一个事件出来!

在本控件中定义如下:

public delegate void GoPageHandler(int PageOrder);

public event GoPageHandler GoPage;

说好了核心,就要看一下我写的https://www.doczj.com/doc/9517397020.html,分页控件的前台代码了,我就直接截图了:

<%@Control Language="C#"AutoEventWireup="true"CodeFile="DispartPage.ascx.cs" Inherits="component_DispartPage" %>

总共有:0条,

15 条/页,

当前第1 /1

OnClick="imgBtnLastPage_Click"/>

这前台代码没什么好说的了,就是几个label加几个ImageButton 控件(每个ImageButton 控件都有一个OnClick事件,对应了后台的一个方法)喽!

下面主要来说说后台代码:

首先来说说控件的初始化页面代码:

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

imgBtnPrevPage.Enabled = false; //首次加载上一页按钮不可用

if (this.PageCount == 1) //如果页数为1,那么下一页按钮也不可用

{

imgBtnNextPage.Enabled = false;

}

}

}

下面就改定义一下这个https://www.doczj.com/doc/9517397020.html,分页控件的属性了,通过属性你可以定义控件的大小等等,当然了你还可以自己开放更多的属性,比如“上一页”“下一页”这些ImageButton 控件的图片。

#region属性

#region当前页

///

///当前页

///

public int CurrentPage

{

set

{

ViewState["CurrentPage"] = value;

this.lblCurrentPage.Text = value.ToString();

}

get

{

if (ViewState["CurrentPage"] == null) return 1;

return (int)ViewState["CurrentPage"];

}

}

#endregion

#region当前页序号

///

///当前页的序号

///

public int CurrentPageNo

{

get

{

if(this.txtToPage.Text.Trim() != "") return Convert.ToInt16(this.txtToPage.Text.Trim());

else return 1;

}

set

{

this.txtToPage.Text = value.ToString();

}

}

#endregion

#region页面的总数

///

///页面的总数,来自数据库查询设置

///

public int PageCount

{

get

{

try

{

return Convert.ToInt32(ViewState["PageCount"]);

}

catch

{

return 0;

}

}

set

{

ViewState["PageCount"] = value;

}

}

#endregion

#region每页记录数

///

///每页记录数

///

public int PageSize

{

get

{

if (ViewState["PageSize"] == null) return 15;

return (int)ViewState["PageSize"];

}

set

{

ViewState["PageSize"] = value;

}

}

#endregion

#region总共条数

public int TotalCount

{

get

{

try

{

return (int)ViewState["RecordCount"];

}

catch

{

return 0;

}

}

set

{

if (value == 0)

{

ViewState["PageCount"] = 0;

}

else if (value < PageSize)

{

ViewState["PageCount"] = 1;

}

else

{

if (value % PageSize == 0)

{

ViewState["PageCount"] = value / PageSize;

}

else

{

ViewState["PageCount"] = (value - value % PageSize) / PageSize + 1; }

}

ViewState["RecordCount"] = value;

this.lblTotalCount.Text = value.ToString();

this.lblNumPerPage.Text = PageSize.ToString();

this.lblTotalPage.Text = PageCount.ToString();

}

}

#endregion

#endregion

接下来就要写这个https://www.doczj.com/doc/9517397020.html,分页控件ImageButton 控件的对应的OnClick事件的代码了!我都已经做了注释,就直接粘贴代码了(总共有五个ImageButton控件)!

#region首页按钮事件

///

///首页

///

///

///

protected void imgBtnFirstPage_Click(object sender, ImageClickEventArgs e)

{

int PageOrder = 1;

if (JudgePageOrder(PageOrder) && (GoPage != null))

{

OnGoToPage(PageOrder);

}

imgBtnPrevPage.Enabled = false;//已经处于首页则上一页按钮不可用

if (this.PageCount != 1)//如果总页数不为1则使下一页按钮可用

{

imgBtnNextPage.Enabled = true;

}

}

#endregion

#region上一页按钮事件

///

///上一页

///

///

///

protected void imgBtnPrevPage_Click(object sender, ImageClickEventArgs e)

{

if (this.CurrentPage > 1)

{

int PageOrder = this.CurrentPage - 1;

if (JudgePageOrder(PageOrder))

{

OnGoToPage(PageOrder);

}

if (this.CurrentPage == 1)//如果当前页已经是第一页了,则是上一页按钮不可用 {

imgBtnPrevPage.Enabled = false;

}

if (this.CurrentPage != this.PageCount)//如果当前页不等于总页数,则使得下一页按钮可用

{

imgBtnNextPage.Enabled = true;

}

}

else

{

ScriptManager.RegisterStartupScript(this, this.GetType(), "info", "alert('这已经是第一页了!');", true);

return;

}

}

#endregion

#region上一页按钮事件

///

///下一页

///

///

///

protected void imgBtnNextPage_Click(object sender, ImageClickEventArgs e)

{

if (this.CurrentPage < this.PageCount)

{

int PageOrder = this.CurrentPage + 1;

if (JudgePageOrder(PageOrder))

{

OnGoToPage(PageOrder);

}

if (this.CurrentPage == this.PageCount)//如果当前页等于总页数则使得下一页按钮不可用

{

imgBtnNextPage.Enabled = false;

}

if (this.CurrentPage != 1)//如果当前页不等于1则使得前一页按钮可用

{

imgBtnPrevPage.Enabled = true;

}

}

else

{

ScriptManager.RegisterStartupScript(this, this.GetType(), "info", "alert('这已经是最后一页了!');", true);

return;

}

}

#endregion

#region尾页按钮事件

///

///尾页

///

///

///

protected void imgBtnLastPage_Click(object sender, ImageClickEventArgs e)

{

int PageOrder = this.PageCount;

if (JudgePageOrder(PageOrder))

{

OnGoToPage(PageOrder);

}

imgBtnNextPage.Enabled = false;//已经处于尾页,使下一页按钮不可用

if (this.PageCount != 1)//如果总页数不等于1,则使得前一页按钮可用

{

imgBtnPrevPage.Enabled = true;

}

}

#endregion

#region转到指定页按钮事件

///

///转到指定页

///

///

///

protected void imgBtnGoPage_Click(object sender, ImageClickEventArgs e)

{

try

{

if (string.IsNullOrEmpty(txtToPage.Text.Trim()))

{

return;

}

if (!IsInt(txtToPage.Text.Trim()))

{

ScriptManager.RegisterStartupScript(this, this.GetType(), "info", "alert('请输入整数!');", true);

return;

}

if (Convert.ToInt64(txtToPage.Text.Trim()) > PageCount)

{

ScriptManager.RegisterStartupScript(this, this.GetType(), "info", "alert('请输入小于最大页数的整数!');", true);

return;

}

if (Convert.ToInt32(txtToPage.Text.Trim()) < 1)

{

ScriptManager.RegisterStartupScript(this, this.GetType(), "info", "alert('请输入大于0的整数!');", true);

return;

}

int page = Convert.ToInt32(txtToPage.Text);

int PageOrder = page;

if (JudgePageOrder(PageOrder))

{

OnGoToPage(PageOrder);

}

}

catch

{

txtToPage.Text = "";

}

}

#endregion

大家发现没有,实现imgBtnGoPage_Click事件的时候调用了一个IsInt()方法,这个方法的实现如下:

#region验证用户输入转到页面的正确性

private bool IsInt(string toPage)

{

bool flag = false;

if (string.IsNullOrEmpty(toPage))

return flag;

else

{

flag = Regex.IsMatch(toPage, @"^-?\d+$");

}

return flag;

}

#endregion

好了,再仔细观察代码是不是发现,这几个事件里面都有一段相同的代码:

if (JudgePageOrder(PageOrder))

{

OnGoToPage(PageOrder);

}

我来详细的解释一下:

JudgePageOrder(PageOrder)用来判断跳转的页面是否合法(通俗的讲就是有没有超出页面范围): #region判断PageOrder的合法性

///

///判断PageOrder的合法性

///

///需要判断的PageOrder

///是否合法

private bool JudgePageOrder(int PageOrder)

{

if (PageOrder < 1)

return false;

if (PageOrder > PageCount)

return false;

return true;

}

#endregion

OnGoToPage(PageOrder)就是我们文章开始讲的核心了,是这个https://www.doczj.com/doc/9517397020.html,分页控件的核心!在后面的实例中我会告诉大家如何来用。先把代码罗列给大家:

protected virtual bool OnGoToPage(int gotoPageIndex)

{

if (GoPage != null)

{

this.CurrentPage = gotoPageIndex;

GoPage(gotoPageIndex);//触发核心事件,来关联数据

}

return true;

}

https://www.doczj.com/doc/9517397020.html,分页控件已经描述完了,由于个人不擅长讲解,所以请大家包涵。下面继续讲解这个https://www.doczj.com/doc/9517397020.html,分页控件的调用的一个实例!

前台代码有两点需要注意:

1.需要注册这个https://www.doczj.com/doc/9517397020.html,分页控件。

<%@Register src="DispartPage.ascx"tagname="DispartPage"tagprefix="uc1" %>

2.调用的代码是:

完整的代码如下:

<%@Page Language="C#"AutoEventWireup="true"CodeFile="CodeMgr.aspx.cs" Inherits="CodeMgr" %>

<%@Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"Namespace="System.Web.UI"TagPrefix="asp" %>

<%@Register src="DispartPage.ascx"tagname="DispartPage"tagprefix="uc1" %>

https://www.doczj.com/doc/9517397020.html,分页控件

 

 

删除

类型编码类型名称 启用状态删除
数据为空!

下面来看后台代码的实现:

首选定义一个DataTable

#region Params

private DataTable dtType

{

set { ViewState["dtType"] = value; }

get { return (DataTable)ViewState["dtType"]; }

}

#endregion

页面初始化的时候我虚拟了一个DataTable并添加了40条数据。同时还注册了这个https://www.doczj.com/doc/9517397020.html,分页控件的开放事件!

#region页面加载初始化

protected void Page_Load(object sender, EventArgs e)

{

DispartPage1.GoPage += new component_DispartPage.GoPageHandler(DispartPage1_GoPage);

if (!IsPostBack)

{

dtType = new DataTable();

DataColumn dc1 = new DataColumn("code_type_no", Type.GetType("System.String"));

DataColumn dc2 = new DataColumn("code_type_name", Type.GetType("System.String"));

DataColumn dc3 = new DataColumn("status", Type.GetType("System.String"));

dtType.Columns.Add(dc1);

dtType.Columns.Add(dc2);

dtType.Columns.Add(dc3);

for (int i = 0; i < 40; i++)

{

DataRow dr = dtType.NewRow();

dr["code_type_no"] = i.ToString();

dr["code_type_name"] = "序号"+i.ToString();

dr["status"] = "1";

dtType.Rows.Add(dr);

}

DataBindGridview(dtType, 1);

}

}

#endregion

这个开放事件的代码如下:

#region分页跳转事件

private void DispartPage1_GoPage(int pageOrder)

{

DataBindGridview(dtType, pageOrder);

}

#endregion

大家有没有看到页面初始化跟这个页面跳转的事件的时候都调用了一个数据绑定的函数DataBindGridview(dtType, 1);

这个函数的实现代码如下:

#region邦定数据到GridView

private void DataBindGridview(DataTable dt, int pageOrder)

{

if (dt != null)

{

//给https://www.doczj.com/doc/9517397020.html,分页控件的属性赋值

DispartPage1.PageSize = grdType.PageSize;

DispartPage1.TotalCount = dt.Rows.Count;

DispartPage1.CurrentPage = pageOrder;

grdType.PageIndex = pageOrder - 1;

}

grdType.DataSource = dt;

grdType.DataBind();

}

#endregion

好了,至此本文就结束了,如果大家有什么疑问可以加我的微信:jkingzhu来与我进行交流!谢谢大家

源码下载地址如下:链接:https://www.doczj.com/doc/9517397020.html,/share/link?shareid=3858817458&uk=25237 2977 密码:q5js

C#(.net)分页控件源码(已测试)

分页控件的用法 align类: using System; namespace MyPaperControls { ///

/// Align 的摘要说明。 /// public enum Align { Center = 0, Left = 1, Right = 2 } } MyPager类: using System; using https://www.doczj.com/doc/9517397020.html,ponentModel; using System.Diagnostics; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Resources; using System.Collections; using System.Collections.Specialized; using System.Text; using System.Text.RegularExpressions; using System.Drawing; using https://www.doczj.com/doc/9517397020.html,pilerServices; using MyPaperControls.Designer; [assembly:TagPrefix("MyPaperControls", "MP")] namespace MyPaperControls { [ ToolboxData("<{0}:MyPaper runat=server>"), ValidationPropertyAttribute("Text"), Designer(typeof(MyPaperControls.Designer.MyPaperDesigner)), DescriptionAttribute("跳转到此页面") ] [ParseChildren(true)]

javascript常用代码大全

Javascript常用代码大全 //打开模式对话框 //返回模式对话框的值 function okbtn_onclick() { var commstr=''; window.returnValue=commstr; window.close() ; } okbtn_onclick() //全屏幕打开IE 窗口 var winWidth=screen.availWidth ; var winHeight=screen.availHeight-20; window.open("main.aspx","surveyWindow","toolbar=no,wid th="+ winWidth +",height="+ winHeight +",top=0,left=0,scrollbars=yes,resizable=yes,center:yes,statu sbars=yes"); //脚本中中使用xml function initialize() { var xmlDoc var xslDoc xmlDoc = new ActiveXObject('Microsoft.XMLDOM') xmlDoc.async = false; xslDoc = new ActiveXObject('Microsoft.XMLDOM') xslDoc.async = false; xmlDoc.load("tree.xml") xslDoc.load("tree.xsl") folderTree.innerHTML = xmlDoc.documentElement.transformNode(xslDoc) } 一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数(用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间,形如(13:04:06) 2.2 短日期,形如(2003-12-05) 2.3 长时间,形如(2003-12-05 13:04:06) 2.4 只有年和月。形如(2003-05,或者2003-5) 2.5 只有小时和分钟,形如(12:03) 3、表单类 3.1 所有的表单的值都不能为空 3.2 多行文本框的值不能为空。 3.3 多行文本框的值不能超过sMaxStrleng 3.4 多行文本框的值不能少于sMixStrleng 3.5 判断单选框是否选择。 3.6 判断复选框是否选择. 3.7 复选框的全选,多选,全不选,反选 3.8 文件上传过程中判断文件类型 4、字符类 4.1 判断字符全部由a-Z或者是A-Z的字字母组成 4.2 判断字符由字母和数字组成。 4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 4.4 字符串替换函数.Replace(); 5、浏览器类 5.1 判断浏览器的类型 5.2 判断ie的版本 5.3 判断客户端的分辨率 6、结合类 6.1 email的判断。 6.2 手机号码的验证 6.3 身份证的验证 二、功能类 1、时间与相关控件类 1.1 日历 1.2 时间控件 1.3 万年历 1.4 显示动态显示时钟效果(文本,如OA中时间) 1.5 显示动态显示时钟效果(图像,像手表) 2、表单类 2.1 自动生成表单 2.2 动态添加,修改,删除下拉框中的元素 2.3 可以输入内容的下拉框 2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发送) 3、打印类 3.1 打印控件 4、事件类 4.1 屏蔽右键 4.2 屏蔽所有功能键 4.3 --> 和<-- F5 F11,F9,F1 4.4 屏蔽组合键ctrl+N 5、网页设计类 5.1 连续滚动的文字,图片

Bootstrap组件功能:路径组件、分页组件、标签组件和徽章组件

https://www.doczj.com/doc/9517397020.html, Bootstrap组件功能:路径组件、分页组件、标签组件和徽章组件 本节课我们主要学习一下Bootstrap的四个组件功能:路径组件、分页组件、标签组件和徽章组件。 一.路径组件 路径组件也叫做面包屑导航。 //面包屑导航

  • 首页
  • 产品列表
  • 韩版2015年羊绒毛衣 二.分页组件 分页组件可以提供带有展示页面的功能。 //默认分页
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • https://www.doczj.com/doc/9517397020.html,

  • »
  • //首选项和禁用 1 2 //设置尺寸,四种lg、默认、sm和xs //翻页效果
  • 上一页
  • 下一页
  • //对齐翻页链接 上一页 下一页 //翻页项禁用 上一页 三.标签 //在文本后面带上标签

    SpringBoot实现分页插件

    实现分页插件的具体步骤: 1.导入jar包 com.github.pagehelper pagehelper-spring-boot-starter 1.2.5 org.springframework.boot spring-boot-starter-test test 2.(两种)在application.yml(propreties)文件加上 第一种:yml pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql 第二种:propreties pagehelper.helper-dialect=mysql pagehelper.reasonable=true pagehelper.support-methods-arguments=true pagehelper.params=count=countSql 3.在controller控制层编写代码 @GetMapping("/getAllPerson") public String getAllPerson(Model model,@RequestParam(defaultValue="1",value ="pageNum") Integer pageNum, String singleName){ PageHelper.startPage(pageNum,2); //设置当前页码,每页的行数 Listlist=aaService.getAllPerson(singleName); //查询的集合 PageInfopageInfo=new PageInfo(list); //把查询的集合放入pageInfo返回给页面 model.addAttribute("pageInfo",pageInfo); model.addAttribute("name",singleName); return"index"; } 4.编写页面 当前页,总页,共条记录 首页 上一页 下一页 尾页

    JavaScript 经典代码大全

    代码一 1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键

    no
    可用于Table 2. 取消选取、防止复制 3. onpaste="return false" 不准粘贴 4. oncopy="return false;" oncut="return false;" 防止复制 5. IE地址栏前换成自己的图标 6. 可以在收藏夹中显示出你的图标 7. 关闭输入法 8. 永远都会带着框架 9. 防止被人frame 10. 网页将不能被另存为 11. 12.删除时确认 删除 13. 取得控件的绝对位置 //javascript //VBScript