go后台写的模板分页小程序

 由于要经常用到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" + "\"" + ">&laquo;</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" + "\"" + ">&raquo;</span>" +
				"</a> </li>"
		}

		html = html + "</ul> </nav>"

	}

	return html

}

把代码copy 到程序中,用法如下:

 totalcount 是你的总条数

page_size:是每页显示的条数

curlpage:是当前的页数

exporerSearch:是查询条件 就是搜索的条件,具体可以修改代码里的&exporeSearch=的单词,这个是每次分页都携带的查询条件。如果在查询时候有筛选的条件也可以自己添加。

number 是显示页码的数量比如是下图(一定要写成奇数的!!!默认为是奇数的)

前面的页面模板中的用法如下

直接引用的是beego 的模板,go 的原生态模板也是可以得。

猜你喜欢

转载自blog.csdn.net/hebeinongda111/article/details/81184099