Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Customising the CMS

TableField Pagination size


6 Posts   1682 Views

Carbon Crayon

19 January 2009 at 1:51am Community Member, 598 Posts

Hi guys

I want to change the default pagination size (or switch off pagination altogether) for all the different table fields, but having gone through the code for them, nothing seems to work.

I changed $PageSize in TableListField.php but that didn't seem to effect any of the complex table fields. I also tried setting $ShowPagination to false in ComplexTableField, but that just hides the pagination controlls rather than showing all the items. In desperation I went through all the table field files and changed any instance of $PageSize to 50 but alas it made no difference.

Anyone got any ideas?



Carbon Crayon

19 January 2009 at 2:28am Community Member, 598 Posts

nevermind, found it in ComplexTableField.php, line 135 :)


18 March 2010 at 7:02am Community Member, 98 Posts

I don't think it's line 135 anymore...

What was it you changed to disable pagination (if you can remember over a year later!)

Carbon Crayon

18 March 2010 at 7:27am Community Member, 598 Posts

lol, those were the days, editing core files willy nilly! hehe

You actually don't need to go anywhere near the core files, instead you can set it explicity in the field definition using $manager->setPageSize($pageSize):

For example if using a dataobject manager (would be the same for ComplextableField):

$manager = new DataObjectManager(
   $this, // Controller
   'Faqs', // Source name
   'Faq', // Source class
   array('Question' => 'Question','AnswerSummary' => 'Answer'),
$fields->addFieldToTab("Root.Content.FAQs", $manager);

Would set the page size to 50. I think you can also do setShowPagination(0) on a ComplexTableField to turn off pagination, but it doesnt seem to work on a DataObjectManager.

Hope that helps!



18 March 2010 at 10:17am Community Member, 98 Posts

As simple as that! Brilliant. I really need to get into the habit of studying the API documentation. Thanks Aram.


31 August 2012 at 11:31pm (Last edited: 31 August 2012 11:31pm), Community Member, 21 Posts

as Aram says setShowPagination(false) doesnt seem to work on DOM at all.

There is a protected variable on the DOM class called showAll however there is no setter* function for it?

I could have added a setter function which would probably have been the better way, but as I don't like editing core/others module files I just manually set the protected showAll variable on my instance of the DOM object.


$manager = new DataObjectManager(
          'BookingRef' => 'Booking Ref',
            'StartDate' => 'Start Date',
            'EndDate' => 'End Date',
            'TotalAmount' => 'Total'
      $manager->relationAutoSetting = true;
      $manager->showAll = 1;

$fields->addFieldToTab('Root.Bookings', $manager);

This seems to remove the pagination and related drop down field. Take note that (although I havnt looked into the code too much) I think it just sets page size to 999 ($this->setPageSize(999)) so if you have over 1000 records it might be worth checking these dont get cut off by the mySQL query limit?


*(there is a ShowAll() function but that just returns true/false depending on wether the showAll variable is true/false e.g. by selecting 'Show All' from the pagination dropdown)