【问题标题】:Grails Pagination: how to use paginationGrails 分页:如何使用分页
【发布时间】:2019-09-26 11:26:37
【问题描述】:

我有一个订单列表(20000条记录),加载很慢, 我正在寻找一种只加载前十个然后激活分页的方法

【问题讨论】:

  • 你试过什么?你尝试了什么没有用?这个问题太笼统了,无法给出好的答案。
  • 我的列表工作,但他很慢,我想让它更快,我现在只需要加载前十个元素,然后我使用分页加载其余的(对不起,我的英语)
  • Rahul 下面的回答描述了如何使用分页控件配置 GSP。您的问题并不表明您甚至在使用 GSP。他的答案是你想要的吗?

标签: grails datatables pagination


【解决方案1】:

您提供的信息很少,因此很难说最佳解决方案是什么。

我正在寻找一种仅加载前十个然后激活 分页

我不知道您所说的“激活分页”是什么意思。

假设您使用的是 GORM,检索前 10 条记录的方法可能是这样的......

YourDomainClass.list(offset:0, max: 10)

要检索下一个 10...

YourDomainClass.list(offset: 10, max: 10)

等等……

您可以使用YourDomainClass.count() 之类的内容找出记录的总数,并使用它反复调用.list(...) 方法来检索所有记录,一次10 条。

希望对你有帮助。

【讨论】:

  • @MamoudouNdiaye 为什么你更喜欢Order.createCriteria().list(max: 10, offset: 0){} 而不是Order.list(max: 10, offset: 0)?对于前者,您分配了一个Closure,它什么都不做,并且涉及到框架的各个部分,这些部分没有做出任何贡献,但无论如何都在参与。
  • 事实上,我只想做一个服务器端分页。我试过这个: def getListOrder() { def employeeList = Order.createCriteria().list(max: 10, offset: 0) { if (params.numero && !"".equals(params.numero)) { ilike(" numero", "%${params.numero}%") } } def totalRows =employeList.totalCount def collection =employeList.collect{ [ numero : it.numero ] } def result = [total: totalRows, rows: collection] 渲染结果为 JSON }
【解决方案2】:

参考这个

域类:

class DataEntry{
    String sendersName
}

控制者:

class TransactionsController {
    def list() {
        [data: DataEntry.list(params), dataEntryCount: DataEntry.count()]
    }
}

分页代码:

<g:paginate controller="transactions" action="list" total="${dataEntryCount}" />

<g:paginate next="Forward" prev="Back"
            maxsteps="0" controller="transactions"
            action="list" total="${dataEntryCount}" />

详情请咨询documentation

【讨论】:

  • 在 Mamoudou 留下的另一个答案的评论中,他们表示他们没有使用 GSP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多