`
javababy1
  • 浏览: 1171266 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一个封装好的CSS分页导航栏

阅读更多

效果请看 http://blog.csdn.net/greystar/archive/2008/04/08/2260363.aspx

page.css

#channel-page
{
height:22px;
margin:5px auto;
padding:0px;
text-align:center;
line-height:20px;
width:500px;
}

#channel-page ul#channel-page-show
{
line-height:20px;
margin: 0px auto;
list-style-type: none;

padding:0px;
text-align:center;
width:100%;
height:22px;
}
#channel-page ul#channel-page-show li
{
display: inline;
float: left;
width: 23px;
padding: 0px 2px;
margin:2px 0px;
height:20px;
text-align:center;

}
#channel-page ul#channel-page-show li a
{
border: solid 1px #999 ;
display: block;
font-weight: 700;
font-size: 12px;
width: 20px;
color: #666;
height:20px;
background-color: #fff;
text-align: center;
text-decoration: none;

}
#channel-page ul#channel-page-show li a:hover
{
font-size: 20px;
z-index: 100;
width: 40px;
line-height: 40px;
position: absolute;
height: 40px;
margin-top: -10px;
margin-right: 0px;
margin-bottom: 0px;
margin-left: -10px;
background-color: #fff;

}
#channel-page ul#channel-page-show li a.page-select
{
color: red;

}
#channel-page ul#channel-page-show li#channel-page-count
{
border: solid 1px #999 ;
font-weight: 700;
font-size: 12px;
width: 50px;
color: #666;
height:20px;
line-height:20px;
background-color: #fff;
text-align: center;
text-decoration: none;
padding :0px;
margin:2px 3px;
float:left;

}

#channel-page ul#channel-page-show li#channel-page-form
{
border: solid 1px #999 ;
display: block;
font-size: 12px;
width: 60px;
color: #666;
float:left;
background-color: #fff;
text-decoration: none;
padding: 0px;
margin-right: 1px;
margin-left: 2px;
white-space:nowrap;
vertical-align:middle;

}

#channel-page-form input#pagenum
{
width: 25px;
float:left;
border:solid 1px #FFF ;
vertical-align:middle;
margin:0px 0px;
color: #666;
}
#channel-page-form input#navButton
{

width: 25px;
float:left;
background-color: #FFF;
font-size: 14px;
border: 1px solid #FFF;
color: #666;
height:20px;
}

pagebar.cs代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Finstone.Common.Control
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:PageBar runat=server></{0}:PageBar>")]
public class PageBar : WebControl
{
public PageBar() : base(HtmlTextWriterTag.Div) {

this.Style.Add("text-align", "center");
this.Style.Add("margin", "2px auto");


}
int page = 1;
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}

set
{
ViewState["Text"] = value;
}
}
protected override void OnLoad(EventArgs e)
{

base.OnLoad(e);
if (Page.Request.QueryString["page"] != null)
{
CurrentPage = int.Parse(Page.Request.QueryString["page"].ToString());
}
page = CurrentPage;
}
protected override void OnPreRender(EventArgs e)
{
string cssurl = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "Finstone.Common.pagebar.css");
Finstone.Common.Web.Util.AddCSS(cssurl, this.Page);

base.OnPreRender(e);
}

protected override void RenderContents(HtmlTextWriter output)
{

StringBuilder sb = new StringBuilder();

int num = 1;
int allcount = AllCount;
int pagesize = PageSize;


num = Finstone.Common.Web.Util.GetPageCount(allcount, pagesize); //根据页尺寸来算出有多少页

int szPage = page;

sb.Append("<div id=\"channel-page\">");
sb.Append("<ul id=\"channel-page-show\">");
sb.Append("<li id=\"channel-page-count\">" + page + "/" + num + "</li>"); //全部页
sb.Append("<li><a target='_self' href='" + Finstone.Common.Web.Util.UpdateParam("page", "1") + "'>&lt;&lt;</a></li>");//第一页

if (szPage > 1)
{
sb.Append("<li><a target='_self' href='" + Finstone.Common.Web.Util.UpdateParam("page", (szPage - 1).ToString()) + "'>&lt;</a></li>");//上一页
}


//这里要算出开始页码和最后的页码 最多10页
int startIndex = 0;
int endIndex = 0;
if (szPage <= 10)
{
startIndex = 0;
endIndex = num < 10 ? num : 10;
}
else
{
startIndex = szPage - 5;
endIndex = num < szPage + 5 ? num : szPage + 5;
}


for (int i = startIndex; i <= endIndex - 1; i++)
{
int szContent = i + 1;
if (szContent == page)
{
sb.Append("<li><a class=\"page-select\" ' href='javascript:void(0);'>" + szContent + "</a></li>");
}
else
{
sb.Append("<li><a target='_self' href='" + Finstone.Common.Web.Util.UpdateParam("page", szContent.ToString()) + "'>" + szContent + "</a></li>");
}
}

if (szPage < num)
{
sb.Append("<li><a target='_self' href='" + Finstone.Common.Web.Util.UpdateParam("page", (szPage + 1).ToString()) + "'>&gt;</a></li>");//后一页
}

sb.Append("<li><a target='_self' href='" + Finstone.Common.Web.Util.UpdateParam("page", num.ToString()) + "'>&gt;&gt;</a></li>");//最后一页

if (ShowNavBar)
{
string s = "";
sb.Append("<li id=\"channel-page-form\">");
string url = RebuildUrl();
sb.Append("<input name=\"pagenum\" type=\"text\" id=\"pagenum\" maxlength=\"5\"><input type=\"button\" id=\"navButton\" value=\"GO\" onclick=\"var intstr=/^\\d+$/;if(intstr.test(pagenum.value)&&pagenum.value<=" + num + "&&pagenum.value>=1){location.href='" + url + "'+pagenum.value;}\"></li>");

}

sb.Append("</ul>");
sb.Append("</div>");

output.Write(sb.ToString());
}


string RebuildUrl()
{
string url = this.Page.Request.CurrentExecutionFilePath+"?";
if (this.Page.Request.QueryString.Count > 0)
{

foreach (string s in this.Page.Request.QueryString.AllKeys)
{
if (s.ToUpper() != "PAGE")
{
url += s + "=" + Page.Request.QueryString[s].ToString() + "&";
}
}
//url = url.TrimEnd('&');

}

url += "page=";

return url;
}
public int AllCount
{
get
{
if (ViewState["allcount"] == null)
return 0;
return (int)ViewState["allcount"];
}
set
{
ViewState["allcount"] = value;
}
}
public int CurrentPage
{
get {
if (ViewState["page"] == null)
return 1;
return (int)ViewState["page"];
}
set {
ViewState["page"] = value;
}

}

public int PageSize
{
get {
if (ViewState["pagesize"] == null)
return 10;
return (int)ViewState["pagesize"];

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

}

public bool ShowNavBar
{
get
{
if (ViewState["shownavbar"] != null)
{
return (bool)ViewState["shownavbar"];
}
else
return false;

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

}
}

AssemblyInfo.cs中加入下一行代码


[assembly: WebResource("Finstone.Common.pagebar.css", "text/css")]

注意,请将page.css文件作为资源文件,

用的时候只要设 AllCount Currentpage,pagesize 几个属性就可以了

分享到:
评论

相关推荐

    WPF分页DataGrid

    最近用到WPF的表格控件,需要使用分页功能,找了很多例子都不是很满意。有些是模仿SL做的DataPager导航条,使用的时候还要和DataGrid组合使用,不是很方便。最好还是继承DataGrid... 于是自己动手封装了一个分页表格。

    java自动分页程序

    简介 分页标记。网页开发中经常遇到查询,当记录多时需要分页显示,通过上一页、下一页浏览全部记录。...它生成的导航条功能比较全面,有两种样式button和text,如下: 每页条记录|共1页/8条记录||第页

    XPAGER分页标记 v2.0

    分页标记。网页开发中经常遇到查询,当记录多...它生成的导航条功能比较全面,有两种样式button和text,如下: 每页条记录|共1页/8条记录||第页 每页条记录 | 共1页/8条记录 | 首 页 上一页 下一页 最后一页 | 第页

    IOS仿今日头条滑动导航栏

    今天仿今日头条滑动导航和网易首页导航封装类优化相似,这个也是解决手势冲突,UIPanGestureRecognizer与ScrollView的手势冲突

    70款经典Dreamweaver插件

    ie_favicon 你只需要一个漂亮的ico格式图片,您的地址栏IE图标将与众不同 favorite_menu 为DW增加一个Favorites 菜单,类似IE收藏夹 layer_transitions 层的多种转换特效 dhtml_tooltips 为页面或链接增加一个dHTML...

    基于SSM+Mysql实现的CRM信息管理系统源码+数据库+项目说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程... * 同样PageHeler里面有一个PageInfo的类可以对数据进行封装,封装的内容和程序中用于封装的p

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    一个flutter练习项目

    https://github.com/iotjin/jh_flutter_demo实现的一些效果UI相关ListView...封装导航条搜索框chart相关(多图表动态加载、渐变折线图、折线柱状图混合图表)JhTopTabBar(导航条分页切换)小红点二维码扫描与生成轮播(全屏...

    C#桌面应用开发个人入门笔记(带有示例代码,且较为完整)

    还有一些我个人额外用到的一些基本控件,比如导航条和图表的使用、利用导航条和DGV实现分页等功能代码示例。 另外该笔记需要用Typora软件打开,MarkDown应该也行,不过我是用Typora编辑的。转载请注明出处。

    jh_flutter_demo:颤抖的演示

    jh_flutter_demo Flutter的新项目-实现一些常用效果,封装通用组件和工具类 ...代码不定期更新 ... JhTopTabBar(导航条分页切换) 小红点 二维码扫描与生成 轮播(全屏,缩放) 动画(标签云) 列表侧滑按钮 城市

    flutter实现常用特效的案例效果代码

    实现的一些效果UI相关ListView相关(上下拉刷新、分组上下拉刷新、分组吸顶...封装导航条搜索框chart相关(多图表动态加载、渐变折线图、折线柱状图混合图表)JhTopTabBar(导航条分页切换)小红点二维码扫描与生成轮播(全屏...

    DYHB-blog v1.4 正式版.rar

    在经历了一个半月的bug修复后DYHB-blog V1.4正式版发布了。此次是最为稳定的版本了,两个后台,两个自带模板,修复了子目录二级域名绑定不能互访的问题和若干bug. 功能如下: 1:评论系统: (ajax 嵌套 分页)可以...

    DYHB-blog 1.4 正式版.rar

    在经历了一个半月的bug修复后DYHB-blog 1.4正式版发布了。此次是最为稳定的版本了,两个后台,两个自带模板,修复了子目录二级域名绑定不能互访的问题和若干bug. 功能如下: 1:评论系统: (ajax 嵌套 分页)可以...

    asp.net知识库

    .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    ASP.NET3.5从入门到精通

    3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET 的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名...

    python入门到高级全栈工程师培训 第3期 附课件代码

    01 抽屉作业之head区域(导航条) 02 抽屉作业之置顶区域 03 抽屉作业之content部分 05 抽屉作业之页码部分 06 抽屉作业之footer部分 第41章 01 JS的历史以及引入方式 02 JS的基础规范 03 JS的基本数据类型 04 JS...

    ASPNET35开发大全第一章

    3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名...

Global site tag (gtag.js) - Google Analytics