自己写的一个ASP.NET服务器控件Repeater和GridView分页类
不墨迹,直接上代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; namespace CutPage
{
//定义查询方法的委托。pageindex查询的页码;pagesize每一页的数据量
public delegate object GetList(int pageindex,int pagesize);
public class SplitPage
{
public int CurrentPageIndex
{
get
{
return Convert.ToInt32(CurrentPage.Session["index"]);
}
set { } }//当前页码
public int PageCount {get;set; }//页面的数量
public event GetList GetListHandle;//根据委托定义查询事件
public HtmlGenericControl HGC { get; set; }//容器(div)
public int PageSize { get; set; }//每个页面中数据的数量
public Page CurrentPage { get; set; }//当前页面
public Repeater ReControl { get; set; }
public GridView GvControl { get; set; } public LinkButton UpLb = new LinkButton {
Text=" 上一页 ",ID="uplb"
};//上一页按钮
private LinkButton DownLb = new LinkButton { Text=" 下一页 ",ID="downlb"};//下一页按钮 private LinkButton DUpLb = new LinkButton { Text=" ... ",ID="DUpLb"};
private LinkButton DDownLb = new LinkButton { Text=" ... ",ID="DDownLb"}; private TextBox txtPage = new TextBox { ID = "txtPage" };
private LinkButton lbGo = new LinkButton { Text=" Go ",ID="lbGo"}; //构造方法,传入当前页面
public SplitPage(Page page)
{ PageSize = ;
CurrentPage = page;
HGC = new HtmlGenericControl(); //判断单签页面的session中是否有index这个项,如果没有则加入其实为0
if (CurrentPage.Session["index"] == null)
CurrentPage.Session.Add("index", );
} //绑定Repeater控件方法,返回一个html容器(div)
public HtmlGenericControl BindRepeater(Repeater re)
{ Procee();
ReControl = re;
re.DataSource = GetListHandle(CurrentPageIndex, PageSize);
re.DataBind();
return HGC;
} public HtmlGenericControl BindGridView(GridView gv)
{
Procee();
this.GvControl = gv;
gv.DataSource = GetListHandle(CurrentPageIndex,PageSize);
gv.DataBind();
return HGC;
} private void Procee()
{
CreateControl();
UpLb.Click += UpLb_Click;
DownLb.Click += DownLb_Click;
HGC.Controls.Add(UpLb);
HGC.Controls.Add(DownLb); HGC.Controls.Add(txtPage);
lbGo.Click += lbGo_Click;
HGC.Controls.Add(lbGo);
} //根据当前页码生成控件
public void CreateControl()
{ int pages = CurrentPageIndex / * ;
this.HGC.Controls.Clear();
if (pages > )
{
DUpLb.Click += DUpLb_Click;
this.HGC.Controls.Add(DUpLb);
}
for (int i = pages; i < pages + ; i++)
{
if (i <= PageCount)
{
LinkButton lb = new LinkButton();
if (i == CurrentPageIndex) lb.Enabled = false;
lb.Text = " " + i.ToString();
lb.ID = i.ToString();
lb.Click += lb_Click;
this.HGC.Controls.Add(lb);
}
}
if (pages+ <= this.PageCount)
{
DDownLb.Click += DDownLb_Click;
this.HGC.Controls.Add(DDownLb);
} } private void lbGo_Click(object sender, EventArgs e)
{
int goIndex = ;
if (Int32.TryParse(txtPage.Text,out goIndex))
{
if (goIndex <= PageCount&&goIndex>)
{
CurrentPage.Session["index"] = goIndex;
CreateControl();
IsNull();
}
else
CurrentPage.Response.
Write("<script>alert('索引超出范围')</script>"); }
else
CurrentPage.Response.
Write("<script>alert('请输入正确的索引')</script>"); } //页码的单击事件
private void lb_Click(object sender, EventArgs e)
{
LinkButton lb = sender as LinkButton;
CurrentPage.Session["index"]=Convert.ToInt32(lb.Text);
CreateControl();
IsNull(); } //判断是绑定的控件
private void IsNull()
{
if (ReControl != null)
BindRepeater(ReControl);
else
BindGridView(GvControl);
} //上一页的单击事件
private void UpLb_Click(object sender, EventArgs e)
{
if (CurrentPageIndex >= )
{
CurrentPage.Session["index"] = --CurrentPageIndex;
CreateControl();
IsNull();
}
} //下一页的单击事件
private void DownLb_Click(object sender, EventArgs e)
{
if (CurrentPageIndex < PageCount)
{
CurrentPage.Session["index"] = ++CurrentPageIndex;
CreateControl();
IsNull();
}
} private void DUpLb_Click(object sender, EventArgs e)
{
int pi = (CurrentPageIndex-) / * ;
CurrentPage.Session["index"] = pi;
IsNull();
} private void DDownLb_Click(object sender, EventArgs e)
{
int pi = (CurrentPageIndex + ) / * ;
CurrentPage.Session["index"] = pi;
IsNull();
} }
}
使用方法
SplitPage sp = new SplitPage(this);
sp.GetListHandle += bm.GetBooks;//分页查询数据库的方法
sp.PageCount = bm.BooksCount() / sp.PageSize ;//总页数
this.divOne.Controls.Add(sp.BindGridView(dvBookInfo));//把放回的div加入到设置好的divOne中,dvBookInfo是一个GridView控件,
//也可以是Repeater控件
上面这个分页类可以在类中添加相关代码,支持其他ASP.NET服务器控件绑定数据后的分页
备注:菜鸟,求指点。
自己写的一个ASP.NET服务器控件Repeater和GridView分页类的更多相关文章
- 多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用 今早上接到一个电话,自已多年前写的一个ASP.NET网站管理系统,一个公司在用,出了点问题, 第一点是惊奇,5,6年前的东东,手机号码换了 ...
- 这两天自己模仿写的一个Asp.Net的显示分页方法 附加实体转换和存储过程
之前自己一直用Aspnetpager控件来显示项目中的分页,但是每次都要拖一个aspnetpager的控件进去,感觉很不舒服,因为现在自己写的webform都不用服务器控件了,所以自己仿照aspnet ...
- 小白写的一个ASP.NET分页控件,仅供娱乐
无聊,第一次写博客,自己动手写了一个分页控件.由于我是新手,有很多地方写得不够好,希望各位大牛多多指正.哈哈哈 /// <summary> /// 分页控件 /// </summar ...
- asp.net 中Repeater和Gridview的区别
Griview: 优点:1.GridView是从WebControl派生出来的,拥有WebControl样式属性,自身会被解析为table,其中的每一行会被 ...
- 分享最近抽空写的一个代码生成器,集成EasyDBUtility数据库访问帮助类
一直想写一个自己的代码生成器,但是因为工作事情多,一直搁置下来,最近下决心终于利用下班时间写完了,现在分享给有需要的朋友,代码生成器集成EasyDBUtility数据库访问帮助类,暂时只支持sqlse ...
- asp.net c# repeater或gridview导出EXCEL的详细代码。
Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Enco ...
- C# 写的一个生成随机汉语名字的小程序
最近因为要做数据库相关的测试,频繁使用到测试数据,手动添加太过于麻烦,而且复用性太差,因此干脆花了点时间写了一个生成随机姓名和相关数据的类,贴在这里,有需用的同志们可以参考一下.代码本身质量不好,也不 ...
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
sql server 关于表中只增标识问题 由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...
- 从零写一个Asp.net core手脚架(模型验证)
一个asp.net core项目,一定包含了各种的实体,在RESTful api里面,有很多的参数传递,不建立实体则大量的参数需要自定验证正确性,并且Action上面会写的密密麻麻的参数 在asp.n ...
随机推荐
- Linux的基本指令--目录和文件和文件属性和文件用户组
目录和文件 一 . ls:列出目录的内容,未给出目录名或是文件名时,就显示当前目录的信息. -a 列出隐藏文件,文件中以”.”开头的均为隐藏文件,如:~/.bashrc -l 列出文件的详细信息 ...
- Unity3D Physics Keynote
[Unity3D Physics Keynote] 1.在哪设置Layer Collision Matrix? "Edit"->"Project Settings& ...
- SESSION的知识
android模拟表单用到了httpclient,但是需要了解Jsessionid的相关知识 如下是从一篇博文摘抄来的 在web应用的开发中我们会经常看到这样的url:http://www.xxx.c ...
- C. Ray Tracing——披着搜索外衣的扩展欧几里得
[题目大意] 给你一个n*m的矩形,光线从(0,0)出发,沿右上方向以每秒根号2米的速度运动,碰到矩形边界就会反弹(符合物理规律的反弹),询问k个点,这些点都在矩形内部且不在矩形边界上,求光经过这些点 ...
- XHProf安装使用笔记
编译安装 获取源代码包root@sourcjoy>wget http://pecl.php.net/get/xhprof-0.9.2.tgz解压root@sourcjoy>tar zxf ...
- selector在color和drawable目录下的区别
selector作为drawable资源时,放于drawable目录下,并且item指定android:drawable属性,引用使用@drawable而不是@color selector作为colo ...
- HandleErrorAttribute
前言 一直在给Team的人强调“Good programming is good Error Handling”,没人喜欢YSOD(Yellow Screen of Death).我每次看到黄页的时候 ...
- SP1557 GSS2 - Can you answer these queries II
一开始看不懂题解,看懂了题解之后觉得还是挺妙的. 好多题解里都提到了HH的项链,但是我觉得关系并不大啊…… 先把所有询问离线下来按照右端点排序,按照询问的要求一个一个加入数字,怎么加入数字,我们设计一 ...
- CLR 显示实现事件 EventSet内部管理一个字典
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- 第一章Python简介
1.Python shell(Python命令解释器) 如下所示 2.Python的交互模式 如下 3.代码编辑器窗口 在上面的那些指令称为源代码. 4.在python中,缩进是有语法意义的. 在某行 ...