Jump to:

5521 Posts in 1733 Topics by 1220 members

Customising the CMS

SilverStripe Forums » Customising the CMS » TableField Pagination size

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1
Go to End
Author Topic: 1657 Views
  • Aram
    Avatar
    Community Member
    598 Posts

    TableField Pagination size Link to this post

    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?

    cheers

    Aram

  • Aram
    Avatar
    Community Member
    598 Posts

    Re: TableField Pagination size Link to this post

    nevermind, found it in ComplexTableField.php, line 135

  • timwjohn
    Avatar
    Community Member
    98 Posts

    Re: TableField Pagination size Link to this post

    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!)

  • Aram
    Avatar
    Community Member
    598 Posts

    Re: TableField Pagination size Link to this post

    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'),
       'getCMSFields_forPopup'
    );
    $manager->setPageSize(50);
    $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!

    Aram

  • timwjohn
    Avatar
    Community Member
    98 Posts

    Re: TableField Pagination size Link to this post

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

  • HARVS1789UK
    Avatar
    Community Member
    19 Posts

    Re: TableField Pagination size Link to this post

    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.

    e.g:

    $manager = new DataObjectManager(
           $this,
             'Bookings',
             'Booking',
             array(
              'BookingRef' => 'Booking Ref',
                'StartDate' => 'Start Date',
                'EndDate' => 'End Date',
                'TotalAmount' => 'Total'
             ),
             'getCMSFields_forPopup'
          );
          $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?

    HARVS

    *(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)

    1657 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.