基于Zhifeiya的分页控件改版的分页。

html显示代码:

<div class="pagelist">
{{.pagerHtml}}
</div>

controller调用代码:

  currentPage, _ := this.GetInt("cp")//当前页
pageSize, _ := this.GetInt("si")//每页记录数
var po pager.PageOptions
po = pager.InitPager("/admin/menu/", pageSize, currentPage, "")
list, total := rmBll.QueryMenuListPager(nil, po.Start, po.PageSize)
po.Total = total
var pagerHtml string = pager.GetPagerInfo(po)
this.Data["list"] = list
this.Data["pagerHtml"] = template.HTML(pagerHtml)

分页代码:前台样式根据页面样式自行调整

package pager

/**
* 描述:分页控件
* 作者:Tianqi
* 时间:2014-09-15
*/
import (
"strconv"
) type PageOptions struct {
Start int64 //开始索引
CurrentPage int64 //当前页
PageSize int64 //页面大小,默认20
Url string //链接地址(不含参数 ?前的地址)
Total int64 //总记录数
TotalPages int64 //总页数
LinkItemCount int64 //生成A标签的个数 默认10个
Params string //参数 FirstPageText string //首页文字 默认"首页"
LastPageText string //尾页文字 默认"尾页"
PrePageText string //上一页文字 默认"上一页"
NextPageText string //下一页文字 默认"下一页"
EnableFirstLastLink bool //是否启用首尾连接 默认false 建议开启
EnablePreNexLink bool //是否启用上一页,下一页连接 默认false 建议开启
} /**
* 初始化分页控件
*/
func InitPager(url string, pagesize int64, currentpage int64, params string) PageOptions {
var po PageOptions
po.Url = url
po.PageSize = pagesize
po.CurrentPage = currentpage
po.Params = params
setDefault(&po)
po.Start = getStart(po.PageSize, po.CurrentPage)
return po
} /**
* 获取分页html
*/
func GetPagerInfo(po PageOptions) string {
po.TotalPages = getTotalPages(po.Total, po.PageSize)
var html string
html += "<div class='l-btns'>"
html += "<span>每页显示</span>"
html += "<input type='text' value='" + strconv.Itoa(int(po.PageSize)) + "' id='pageSize' class='pagenum'/>"
html += "<span>条,共 "
html += strconv.Itoa(int(po.Total))
html += " 条记录/ "
html += strconv.Itoa(int(po.TotalPages))
html += " 页</span>"
// html += "</div>"
// html += "<div class='default'>"
html += ""
if po.CurrentPage == {
html += po.FirstPageText
html += po.PrePageText
} else {
html += "<a href='" + getHref(po.Url, , po.PageSize, po.Params) + "'>"
html += po.FirstPageText
html += "</a><a href='" + getHref(po.Url, po.CurrentPage-, po.PageSize, po.Params) + "'>"
html += po.PrePageText
html += "</a>"
}
if po.TotalPages > po.LinkItemCount {
for i := po.CurrentPage - po.LinkItemCount/ + ; i <= po.CurrentPage+po.LinkItemCount/-; i++ {
if i < || i > po.TotalPages {
continue
}
if po.CurrentPage != i {
html += "<a href='" + getHref(po.Url, i, po.PageSize, po.Params) + "'>" + strconv.Itoa(int(i)) + "</a>"
} else {
html += "<span class=\"current\">" + strconv.Itoa(int(i)) + "</span>"
}
}
} else {
var i int64 =
for ; i <= po.TotalPages; i++ {
if po.CurrentPage != i {
html += "<a href='" + getHref(po.Url, i, po.PageSize, po.Params) + "'>" + strconv.Itoa(int(i)) + "</a>"
} else {
html += "<span class=\"current\">" + strconv.Itoa(int(i)) + "</span>"
}
}
} if po.CurrentPage >= po.TotalPages {
html += po.NextPageText
html += po.LastPageText
} else {
html += "<a href='" + getHref(po.Url, po.CurrentPage+, po.PageSize, po.Params) + "'>"
html += po.NextPageText
html += "</a><a href='" + getHref(po.Url, po.TotalPages, po.PageSize, po.Params) + "'>"
html += po.LastPageText
html += "</a>"
}
html += "<input type='hidden' id='pagerHref' value='" + getHref1(po.Url, po.CurrentPage, po.Params) + "'/>"
html += ""
html += "</div>"
return html
} /**
* 描述:获取起始记录索引
*/
func getStart(pageSize int64, currentPage int64) int64 {
return (currentPage - ) * pageSize
} /**
* 描述:获取总页数
*/
func getTotalPages(total int64, pageSize int64) int64 {
var totalPages int64
if total%pageSize == {
totalPages = total / pageSize
} else {
totalPages = total/pageSize +
}
return totalPages
} /**
* 描述:获取链接地址
*/
func getHref(url string, currentPage int64, pageSize int64, params string) string {
var href string
href += url + "?cp=" + strconv.Itoa(int(currentPage)) + "&si=" + strconv.Itoa(int(pageSize))
if len(params) > {
href += params
}
return href
} /**
* 描述:获取链接地址,不包含pageSize值,页面使用
*/
func getHref1(url string, currentPage int64, params string) string {
var href string
href += url + "?cp=" + strconv.Itoa(int(currentPage))
if len(params) > {
href += params
}
href += "&si="
return href
} /**
* 设置默认值
*/
func setDefault(po *PageOptions) {
if len(po.FirstPageText) <= {
po.FirstPageText = "首页"
}
if len(po.LastPageText) <= {
po.LastPageText = "尾页"
}
if len(po.PrePageText) <= {
po.PrePageText = "上一页"
}
if len(po.NextPageText) <= {
po.NextPageText = "下一页"
}
if po.LinkItemCount == {
po.LinkItemCount =
}
if po.PageSize <= {
po.PageSize =
}
if po.CurrentPage < {
po.CurrentPage =
}
}

Tianqi.

自定义分页控件-基于Zhifeiya的分页控件改版的更多相关文章

  1. C# 历史曲线控件 基于时间的曲线控件 可交互的高级曲线控件 HslControls曲线控件使用教程

    本篇博客主要对 HslControls 中的曲线控件做一个详细的教程说明,大家可以根据下面的教程开发出高质量的曲线控件 Prepare 先从nuget下载到组件,然后就可以使用组件里的各种组件信息了. ...

  2. SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页

        存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出 ...

  3. Repeater控件使用(含删除,分页功能)

    Repeater控件使用(含删除,分页功能) 摘自:http://www.cnblogs.com/alanliu/archive/2008/02/25/914779.html 前臺代碼 <%@ ...

  4. 使用ScriptX控件实现IE浏览器分页打印功能

    之前讲过js调用ie浏览器自带打印的用法,今天讲使用插件的方式.浏览器自带打印不能控制页边距.页眉页脚等选项,尤其是如果分页打印的话,无法自动将前一页标题带到本页,所以不适用多页打印的功能.使用Scr ...

  5. 基于jQuery 常用WEB控件收集

    Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. Horizontal accordion: jQuery jQuery-Horizonta ...

  6. 一些基于jQuery开发的控件

    基于jQuery开发,非常简单的水平方向折叠控件.主页:http://letmehaveblog.blogspot.com/2007/10/haccordion-simple-horizontal-a ...

  7. bootstrap-paginator基于bootstrap的分页插件

    bootstrap-paginator基于bootstrap的分页插件 GitHub 官网地址:https://github.com/lyonlai/bootstrap-paginator 步骤 引包 ...

  8. 【转载】基于MFC的ActiveX控件开发(1)

    原文:http://iysm.net/?p=114 ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在VC下ActiveX控件的开发可以分为三种,一 ...

  9. 本博文将一步步带领你实现抽屉官网的各种功能:包括登陆、注册、发送邮箱验证码、登陆验证码、页面登陆验证、发布文章、上传图片、form验证、点赞、评论、文章分页处理以及基于tronado的后端和ajax的前端数据处理。

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tronado的后端和ajax的 ...

随机推荐

  1. 基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询

    前言 基于SpringMVC+Bootstrap+DataTables实现数据表格服务端分页.模糊查询(非DataTables Search),页面异步刷新. 说明:sp:message标签是使用了S ...

  2. nested exception is java.lang.NoClassDefFoundError: org/codehaus/jettison/json/JSONObject异常的解决办法

    解决办法:你可以尝试添加一个jar包,因为我加入了一个jar包后错误问题成功解决. 将所需要的jettison-1.2.jar包复制到lib文件夹里面,重启项目,问题搞定.

  3. Qt之图形(QPainter的基本绘图)

    简述 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类. QPainter用来执行 ...

  4. Android 主界面长按创建快捷方式

    Android中创建快捷方式主要有两种方式.一是在代码中直接加入生成桌面快捷方式的代码:二是通过小部件加入; 这篇文章主要讲另外一种方法! 1.通过在AndroidManifest文件里为Activi ...

  5. 面试题:Student s = new Student();在内存中做了哪些事情?即创建一个对象做了哪些事情

    lStudent s = new Student();在内存中做了哪些事情? •载入Student.class文件进内存(方法区) •在栈内存为s开辟空间 •在堆内存为学生对象开辟空间 •对学生对象的 ...

  6. HDU 2112 HDU Today &lt;SPFA算法+map函数&gt;

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. JavaScript-html标题滚动效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. MPI搭建简要教程

    具体安装部署,能够參考 http://www.ibm.com/developerworks/cn/linux/l-cn-mpich2/,该教程将的比較具体. 注:不同版本号的 MPICH2对编译器以及 ...

  9. bzoj1005: [HNOI2008]明明的烦恼(prufer+高精度)

    1005: [HNOI2008]明明的烦恼 题目:传送门 题解: 毒瘤题啊天~ 其实思考的过程还是比较简单的... 首先当然还是要了解好prufer序列的基本性质啦 那么和1211大体一致,主要还是利 ...

  10. android常用控件的使用方法

    引言 xml很强大 TextView <TextView android:id="@+id/text_view" android:layout_width="mat ...