控制器:
func (s *AdminPoolsController) Get(){ o := orm.NewOrm() qs := o.QueryTable("Pools") count, _ := qs.Count() page, _ := s.GetInt("page",1)// 获取当前页码 pagesize := 5 //每页显示信息数 //总页数 pagecount := int(math.Ceil((float64(count) / float64(pagesize)))) if(page<0){ page=utils.Max(page,1); } if(page>pagecount){ page=utils.Min(page,pagecount); } //存储分页数据的切片 articles := new([]models.Pools) //获取分页数据 qs.Limit(pagesize, pagesize*(page - 1)).All(articles) //beego.Info(*articles) s.Data["articles"] = *articles s.Data["multipage"] =utils.GetMultipage(page,int(count),pagecount) s.TplName = "admin/pools.html" }
工具类:
package utils import ( "strconv" ) func Min(x, y int) int { if x < y { return x } return y } func Max(x, y int) int { if x > y { return x } return y } func GetMultipage(page int,count int,pagecount int) string{ pagePre:=Min(page-1,page); pageNext:=Max(page+1,page); multipage:="<div>" multipage+="<a href='/admin/pools/list?page=1'>首页</a>" multipage+="<a href='/admin/pools/list?page="+strconv.Itoa(pagePre)+"'>上一页</a>" multipage+="<a href='/admin/pools/list?page="+strconv.Itoa(pageNext)+"'>下一页</a>" multipage+="<a href='/admin/pools/list?page="+strconv.Itoa(pagecount)+"'>尾页</a>" multipage+="<span style='margin-left: 10px;'>第"+strconv.Itoa(page)+"/"+strconv.Itoa(pagecount)+"页,共"+strconv.Itoa(count)+"条</span>" multipage+="</div>" return multipage }
模板:
<table class="table table_clear"> <tbody> <tr> <td>{{str2html .multipage}}</td> </tr> </tbody> </table>