[golang]beego列表分页


Page.go

package models

import (
	"bytes"
	"strconv"
	"strings"
)

type Page struct {
	PageNo     int    //当前页
	PageSize   int    //每页多少数据
	TotalPage  int    //总共多少页
	TotalCount int    //总共多少条数据
	FirstPage  int    //第一页
	LastPage   int    //最后一页
	Url        string //链接
}

func NewPage(PageNo int, PageSize int, TotalCount int, Url string) Page {
	return Page{PageNo: PageNo, PageSize: PageSize, TotalCount: TotalCount, Url: Url}
}

//计算总页数
func (this *Page) getPageCount() {
	var tp float32 = float32(this.TotalCount) / float32(this.PageSize)
	if tp < 1 {
		this.TotalPage = 1
	}
	var tpint float32 = float32(int(tp))

	if tp > tpint {
		tpint += 1
	}
	this.TotalPage = int(tpint)
	this.LastPage = int(tpint)
	this.FirstPage = 1
	this.execUrl()
}

//格式化URL地址
func (this *Page) execUrl() {
	if strings.Contains(this.Url, "?") {
		this.Url = strings.Join([]string{this.Url, "&page="}, "")
	} else {
		this.Url = strings.Join([]string{this.Url, "?page="}, "")
	}
}

//获取URL组织
func (this *Page) getUrl(page int) string {
	return strings.Join([]string{this.Url, strconv.Itoa(page)}, "")
}

//
func (this *Page) Show() string {
	this.getPageCount()
	var buf bytes.Buffer
	buf.WriteString("
   
   
  • ") if this.PageNo > 1 { buf.WriteString("
  • 上一页
  • ") } for i := 1; i <= this.TotalPage; i++ { if i == this.PageNo { buf.WriteString("
  • ") buf.WriteString(strconv.Itoa(i)) } else { buf.WriteString("
  • ") buf.WriteString(strconv.Itoa(i)) } buf.WriteString("
  • ") } if this.PageNo < this.TotalPage { buf.WriteString("
  • 下一页
  • ") } buf.WriteString("
  • ") buf.WriteString(strconv.Itoa(this.PageNo)) buf.WriteString("/") buf.WriteString(strconv.Itoa(this.TotalPage)) buf.WriteString("
") return buf.String() } //具体beego使用--博客文章列表 article.go var page int var errd error page, errd = this.GetInt("page")//获取页数 if errd != nil && page < 1 { page = 1 } articleModel := models.Article{} var pagesize int = 3 //每页多少条数据 _, num := articleModel.Count() //获取总数目 var pages models.Page = models.NewPage(page, pagesize, num, "/article/index") this.Data["page"] = pages.Show() alist, err := articleModel.List(page, pagesize) //模板中使用 -- article.html //Page返回的是字符串 必须用函数转成HTML实体
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值