由于要经常用到go 语言写后台管理系统,每次遇到分页问题,都是乱七八糟的,后来就索性自己写了一个后台的模板插件。
前面引用的是bootstrap 的css样式!一定要引入bootstrap 不然渲染失败
利用的是go的模板渲染引擎,所以不存在前后端分离的!,这个是利用beego 模板,不过beego 用的也是go 的原生态模板,只要是go 语言都可以用这个后台小程序
具体代码如下:
func PagerHtml(totalcount int, page_size int, curpage int, mpurl string, number int) string {
if number%2 == 0 {
return "请输入为奇数的页码数"
}
totalpage := 0
if totalcount%page_size > 0 {
totalpage = (totalcount / page_size) + 1
} else {
totalpage = (totalcount / page_size)
}
//如果返回为空,那就返回为空
if totalcount == 0 {
return ""
}
html := ""
//如果返回的条数大于每页的条数才能产生分页
if totalcount > page_size {
html = "<ul class=" + "\"" + "pagination" + "\"" + ">" +
"<li><a>" + util.ToString(totalcount) + "条</a></li>" +
"<li><a>" + util.ToString(totalpage) + "页</a></li>"
if curpage > 1 {
html = html +
"<li>" +
"<a href=?page=" + util.ToString(curpage-1) + "&explorerSearch=" + mpurl + " aria-label=" + "\"" + "Previous" + "\"" + ">" +
"<span aria-hidden=" + "\"" + "true" + "\"" + ">«</span>" +
"</a> </li>"
}
if totalpage <= number {
for i := 1; i <= totalpage; i++ {
if i == curpage {
html = html + "<li class=" + "\"" + "active" + "\"" + "><a href=?page=" + util.ToString(i) + "&explorerSearch=" + mpurl + " >" + util.ToString(i) + "</a></li>"
} else {
html = html + "<li><a href=?page=" + util.ToString(i) + "&explorerSearch=" + mpurl + ">" + util.ToString(i) + "</a></li>"
}
}
} else {
if curpage > 1 {
if curpage < totalpage {
start := curpage - (number-1)/2
end := curpage + (number-1)/2
length := 0
if start < 1 {
length = 1 - start
start = 1
if (end + length) > totalpage {
length = length - ((end + length) - totalpage)
}
}
if (end + length) > totalpage {
length = length - ((end + length) - totalpage)
if(length<0){
start=start+length
}
}
for i := start; i <= end+length; i++ {
if i == curpage {
html = html + "<li class=" + "\"" + "active" + "\"" + "><a href=?page=" + util.ToString(i) + "&explorerSearch=" + mpurl + ">" + util.ToString(i) + "</a></li>"
} else {
html = html + "<li><a href=?page=" + util.ToString(i) + "&explorerSearch=" + mpurl + ">" + util.ToString(i) + "</a></li>"
}
}
} else {
for i := curpage - number + 1; i <= curpage; i++ {
if i == curpage {
html = html + "<li class=" + "\"" + "active" + "\"" + "><a href=?page=" + util.ToString(i) + "&explorerSearch=" + mpurl + ">" + util.ToString(i) + "</a></li>"
} else {
html = html + "<li><a href=?page=" + util.ToString(i) + "&explorerSearch=" + mpurl + ">" + util.ToString(i) + "</a></li>"
}
}
}
} else {
for i := curpage; i <= number; i++ {
if i == curpage {
html = html + "<li class=" + "\"" + "active" + "\"" + "><a href=?page=" + util.ToString(i) + "&explorerSearch=" + mpurl + ">" + util.ToString(i) + "</a></li>"
} else {
html = html + "<li><a href=?page=" + util.ToString(i) + "&explorerSearch=" + mpurl + ">" + util.ToString(i) + "</a></li>"
}
}
}
}
if curpage < totalpage {
html = html +
"<li>" +
"<a href=?page=" + util.ToString(curpage+1) + "&explorerSearch=" + mpurl + " aria-label=" + "\"" + "Next" + "\"" + ">" +
"<span aria-hidden=" + "\"" + "true" + "\"" + ">»</span>" +
"</a> </li>"
}
html = html + "</ul> </nav>"
}
return html
}
把代码copy 到程序中,用法如下:
totalcount 是你的总条数
page_size:是每页显示的条数
curlpage:是当前的页数
exporerSearch:是查询条件 就是搜索的条件,具体可以修改代码里的&exporeSearch=的单词,这个是每次分页都携带的查询条件。如果在查询时候有筛选的条件也可以自己添加。
number 是显示页码的数量比如是下图(一定要写成奇数的!!!默认为是奇数的)
前面的页面模板中的用法如下
直接引用的是beego 的模板,go 的原生态模板也是可以得。