分页复合件
来源:互联网 发布:mac上的dj软件 编辑:程序博客网 时间:2024/05/17 02:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Xml;
namespace MyPager
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:Pager runat=server></{0}:Pager>")]
public class Pager : Control, INamingContainer
{
private string _constrkey;//数据库连接字符键值
private string _selectstr;//返回字段
private string _tablename;//表名
private string _wherestr;//条件语句
private string _orderby;//排序语句
private string _controlname;//显示控件名称
private ControlType _viewcontroltype;//显示控件类型
private int _pagesize;//每页记录数
private int _pageindex;//当前页码
private int _pagecount;//总页数
private int _rowcount;//记录总数
private string _pagerstyle;//分页控件外DIV样式
private string _linkstyle;//链接样式
private string _focusstyle;//焦点字样式
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("数据库连接键值,在AppSettings中设置")
]
public string ConStrKey {
set { _constrkey = value; }
get { return _constrkey; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("读取字段")
]
public string SelectStr
{
set { _selectstr = value; }
get { return _selectstr; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("读取表名")
]
public string TableName
{
set { _tablename = value; }
get { return _tablename; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("条件语句,不需要Where")
]
public string WhereStr
{
set { _wherestr = value; }
get { return _wherestr; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("排序语句,不需要Order By ")
]
public string OrderBy
{
set { _orderby = value; }
get { return _orderby; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("显示数据控件名称")
]
public string ControlName
{
set { _controlname = value; }
get { return _controlname; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("显示数据控件类型")
]
public ControlType ViewControlType
{
set { _viewcontroltype = value; }
get { return _viewcontroltype; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("每页记录数")
]
public int PageSize
{
set { _pagesize = value; }
get { return _pagesize; }
}
public enum ControlType
{
DataList,
GridView,
Repeater
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("分页控件外DIV样式")
]
public string PagerStyle
{
set { _pagerstyle = value; }
get { return _pagerstyle; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("LinkBtn链接样式")
]
public string LinkStyle
{
set { _linkstyle = value; }
get { return _linkstyle; }
}
[
Bindable(true),
Category("HGProperty"),
DefaultValue(""),
Description("焦点文字样式(页数,记录数,当前页)")
]
public string FocusStyle
{
set { _focusstyle = value; }
get { return _focusstyle; }
}
protected override void OnInit(EventArgs e)
{
if (!Page.IsPostBack)
{
PagerDataBind(1);
}
// base.CreateChildControls();
}
protected override void CreateChildControls()
{
//添加linkbutton
LinkButton linkbtn1 = new LinkButton();
linkbtn1.Text = "首页";
linkbtn1.ID = "Index";
linkbtn1.Click += new EventHandler(Index_Click);
linkbtn1.CssClass = _linkstyle;
LinkButton linkbtn2 = new LinkButton();
linkbtn2.Text = "上一页";
linkbtn2.ID = "Pre";
linkbtn2.Click += new EventHandler(Pre_Click);
linkbtn2.CssClass = _linkstyle;
LinkButton linkbtn3 = new LinkButton();
linkbtn3.Text = "下一页";
linkbtn3.ID = "Next";
linkbtn3.Click += new EventHandler(Next_Click);
linkbtn3.CssClass = _linkstyle;
LinkButton linkbtn4 = new LinkButton();
linkbtn4.Text = "末页";
linkbtn4.ID = "End";
linkbtn4.Click += new EventHandler(End_Click);
linkbtn4.CssClass = _linkstyle;
Literal spanPageCount = new Literal();
spanPageCount.ID = "PageCount";
Literal spanRowCount = new Literal();
spanRowCount.ID = "RowCount";
Literal spanPIndex = new Literal();
spanPIndex.ID = "PIndex";
DropDownList drp = new DropDownList();
drp.ID = "Drp";
drp.AutoPostBack = true;
drp.SelectedIndexChanged += new EventHandler(drp_SelectedIndexChanged);
Controls.Add(new LiteralControl("<div id='PageDiv' runat=\"Server\" class='" + _pagerstyle + "'>"));
Controls.Add(new LiteralControl("共<span class='" + _focusstyle + "'>"));
Controls.Add(spanPageCount);
Controls.Add(new LiteralControl("</span>页<span class='" + _focusstyle + "'>"));
Controls.Add(spanRowCount);
Controls.Add(new LiteralControl("</span>条 当前是第<span class='" + _focusstyle + "'>"));
Controls.Add(spanPIndex);
Controls.Add(new LiteralControl("</span>页 "));
Controls.Add(linkbtn1);
Controls.Add(new LiteralControl(" "));
Controls.Add(linkbtn2);
Controls.Add(new LiteralControl(" "));
Controls.Add(linkbtn3);
Controls.Add(new LiteralControl(" "));
Controls.Add(linkbtn4);
Controls.Add(new LiteralControl(" 转到第"));
Controls.Add(drp);
Controls.Add(new LiteralControl("页</div>"));
base.CreateChildControls();
}
void drp_SelectedIndexChanged(object sender, EventArgs e)
{
_pageindex = Convert.ToInt32(((DropDownList)this.FindControl("Drp")).SelectedValue);
Literal ltr = (Literal)this.FindControl("PIndex");
ltr.Text = _pageindex.ToString();
PagerDataBind(_pageindex);
//throw new NotImplementedException();
}
#region linkbutton的click事件
void Index_Click(object sender, EventArgs e)
{
Literal ltr = (Literal)this.FindControl("PIndex");
DropDownList drp = (DropDownList)this.FindControl("Drp");
_pageindex = 1;
ltr.Text = "1";
drp.SelectedValue = "1";
PagerDataBind(_pageindex);
}
void Pre_Click(object sender, EventArgs e)
{
Literal ltr = (Literal)this.FindControl("PIndex");
_pageindex = Convert.ToInt32(ltr.Text)-1;
ltr.Text = _pageindex.ToString();
PagerDataBind(_pageindex);
}
void Next_Click(object sender, EventArgs e)
{
Literal ltr = (Literal)this.FindControl("PIndex");
_pageindex = Convert.ToInt32(ltr.Text) + 1;
ltr.Text = _pageindex.ToString();
PagerDataBind(_pageindex);
}
void End_Click(object sender, EventArgs e)
{
Literal ltr = (Literal)this.FindControl("PageCount");
_pageindex = Convert.ToInt32(ltr.Text);
ltr.Text = _pageindex.ToString();
PagerDataBind(_pageindex);
}
#endregion
#region 设计时支持
/// <summary>
/// 设计时支持
/// </summary>
/// <param name="output"></param>
protected override void Render(HtmlTextWriter output)
{
if ((base.Site != null) && base.Site.DesignMode)
{
output.Write("<div style='font-size: 12px; '>共3页9条 当前是第2页 首页 上一页 下一页 末页 转到第页</div>");
}
else
{
//output.Write("<div id='" + this.ClientID + "Page' style='TEXT-ALIGN: center;width:90%'>");
if (_pagecount > 1)
{
base.Render(output);
}
//output.Write("</div>");
}
}
#endregion
//public override void DataBind() {
//}
private void PagerDataBind(int intpageindex) {
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings[_constrkey].ToString());
con.Open();
SqlCommand cmd = new SqlCommand(GetSqlStr(intpageindex), con);
SqlDataReader dr = cmd.ExecuteReader();
int i = 0;
switch (_viewcontroltype)
{
case ControlType.Repeater:
((Repeater)Parent.FindControl(_controlname)).DataSource = dr;
((Repeater)Parent.FindControl(_controlname)).DataBind();
break;
case ControlType.DataList:
((DataList)Parent.FindControl(_controlname)).DataSource = dr;
((DataList)Parent.FindControl(_controlname)).DataBind();
break;
case ControlType.GridView:
((GridView)Parent.FindControl(_controlname)).DataSource = dr;
((GridView)Parent.FindControl(_controlname)).DataBind();
break;
}
dr.Close();
dr.Dispose();
string sql2 = "";
if (_wherestr != null)
{
sql2 = " Where " + _wherestr;
}
SqlCommand cmd2 = new SqlCommand("Select Count(ID) From " + _tablename + sql2, con);
i = Convert.ToInt32(cmd2.ExecuteScalar());
con.Close();
con.Dispose();
_rowcount = i;
if ((_rowcount % _pagesize) == 0)
{
_pagecount = Convert.ToInt32(_rowcount / _pagesize);
}
else
{
_pagecount = Convert.ToInt32(_rowcount / _pagesize) + 1;
}
_pageindex = intpageindex;
LinkButton lIndex=(LinkButton)this.FindControl("Index");
LinkButton lPre=(LinkButton)this.FindControl("Pre");
LinkButton lNext=(LinkButton)this.FindControl("Next");
LinkButton lEnd=(LinkButton)this.FindControl("End");
lIndex.Visible = true;
lIndex.Enabled = true;
lPre.Visible = true;
lNext.Visible = true;
lEnd.Visible = true;
lEnd.Enabled = true;
if (intpageindex == 1) {
lPre.Visible = false;
lIndex.Enabled = false;
}
if (intpageindex == _pagecount) {
lNext.Visible = false;
lEnd.Enabled = false;
}
((Literal)this.FindControl("PageCount")).Text=_pagecount.ToString();
((Literal)this.FindControl("RowCount")).Text = _rowcount.ToString();
((Literal)this.FindControl("PIndex")).Text = _pageindex.ToString();
//绑定DropDownList
if (!Page.IsPostBack)
{
DropDownList drp = (DropDownList)this.FindControl("Drp");
for (int j = 1; j <= _pagecount; j++)
{
drp.Items.Add(j.ToString());
}
}
}
private string GetSqlStr(int pageindex)
{
System.Text.StringBuilder sb = new StringBuilder();
sb.Append("Select Top " + _pagesize + " " + _selectstr + " From " + _tablename);
string orderby = "";
if (_orderby != null) {
orderby = " Order By " + _orderby;
}
if (_wherestr == null)
{
sb.Append(" Where ID Not In(Select Top " + (pageindex - 1) * _pagesize + " ID From " + _tablename + orderby + ") " + orderby);
}
else
{
sb.Append(" Where ID Not In(Select Top " + (pageindex - 1) * _pagesize + " ID From " + _tablename + " Where " + _wherestr + orderby + ") and " + _wherestr + orderby);
}
return sb.ToString();
}
}
}
- 分页复合件
- 复合分页控件
- 共和国复合件法国恢复和发动机
- 复合控件分页控件参考代码
- Yii 分页链接定制(复合条件分页) [整理学习]
- 复合
- 复合
- ASP.NET GridView 复合表头(带自动分页设置)
- [数据库]MongoTemplate之分组分页复合条件查询
- PHP-简单分页和文件上传类
- js分页小组件,关于回调
- 第十三章:事件类型(键盘和文本事件、复合事件、变动事件)
- servlet文件上传2——复合表单提交(数据获取和文件上传)
- 通用分页存储过程--可用于复合主键盘(字段)排序
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
- Mysql limit 优化,百万至千万级快速分页,--复合索
- Java操作Hbase增删改查(附带复合条件查询以及分页查询)
- java操作mongdb多条件复合查询(包括模糊查询和按时间段查询),分页
- mysql怎么清掉自增长的id
- Spring MVC 学习 之 - URL参数传递
- iOS开发-Day14-OC封装
- 基于距离的计算方法
- Jsoup解析html
- 分页复合件
- css3画圆
- Nginx自定义模块编写:根据post参数路由到不同服务器
- B树、B-树、B+树、B*树
- 存储过程格式
- 2015年7月31日总结
- Two Sum
- Oracle入门学习----函数的使用
- @Autowired与@Resource的区别