By default DG3 only lists the first 100 of a query. You can turn this value as large as you like, but when you have thousands of records, you might just want to show a few at the time. To do this, you can use the pagination queries. They work you using a q. command in either url query or in the fixed filter of the view.

q.start int Start pos of the records
q.count int How many to list, use max record if not set
q.rowcalc 1 (True) Will add some extra values to the context. The values added are:

rows - that is the total number of rows possible in the query
start  - where we started the list
end   - where we actually ended the list (if there are less rows left then maxrows then this number is less than start + maxcount)
maxrow - the max rows that will be returned by this query
sections - (rows / maxcount) + 1 
rowcalcurls - returns an array of urls the number asked for
- idx - index in list
- url - the url to this pos
- pos - the posistion in the pager as a number
- active - True if this the the same index as the current page 

prevurl - the previous block or the same if you are at the start 

nexturl  - the next block or the same if there is no more

All of these values are returned in a context var named TableNameRowCalc, so Customers will get a CustomerRowCalc.rows etc. livetext fields.

q.rowcalcurls int how many urls to return when rowcalc is activated

Example for url use

?q.start=100&q.count=10
Will show the next 10 from start 100
?customers.q.start=200&Customer.q.count=20&Customers.q.start=200&Invoices.q.start=10&Invoices=q.count=5
Will list the first 20 customers starting at 200 and list the 5 invoices starting at 10.
Example for template use
<ul class="pagination  pagination-sm">
	<li [% if MyTableRowCalc.start == 0 %]class="disabled"[% endif %]><a href="/searchresult/?[{ MyTableRowCalc.prevurl }]">Prev. &laquo;</a></li>
[% for rc in  MyTableRowCalc.rowcalcurls %]
	<li[% if rc.active %] class="active"[% endif %]><a href="/searchresult/?[{ rc.url }]">[{ rc.pos }]</a></li>
[% endfor %]
	<li><a href="/searchresult/?[{ MyTableRowCalc.nexturl }]">Next &raquo;</a></li>
</ul>
<p>[{ MyTableRowCalc.start|add:"+1"  }] - [{ MyTableRowCalc.end }] OF [{ MyTableRowCalc.rows }]</p>

This will use the rowcalc=1&rowcalcurls=5 settings in the fixed filter for a dataview with the table named MyTable in the page and then the above snippet to display the pagination using Bootrap paginations. Then we added a line show start and end of the total number of records. The |add filter is just to start on 1 instead of 0 as normal users usually start counting at 1 and not 0 as computer languages.