Skip to Main Content
Feature Request FR-4032
Product Area Page Components
Status DELIVERED

4 Voters

Actual "Select all" option on Interactive Grids

derik.tran Public
· Sep 28 2024

Idea Summary
Can we actually have the “Select All” checkbox to select all records on the interactive grid?  

Use Case
Currently, the select all option only selects all the records in a given page.  This is very misleading to our users and we should differentiate a select all on page vs select all records option because we may trigger an update or action for all these options.  Our users are used to understanding select all means well, SELECT ALL.

Preferred Solution (Optional)
Have the current select all to actually select all records and give us the option to differentiate when selecting just records on the page rendered clearly.

This has been delivered in Oracle APEX 24.1!

Comments

Comments

  • karel ekema OP 9 months ago

    I'm not an Oracle employee, but sharing the below.

    Realize that the dataset of ‘all records’ can be huge, and any platform will need an approach as to protect from exhausting the browser. 

    Data is only loaded into the model ‘progressively’. Initially, typically 50 records are loaded. New data is loaded upon need when browsing through the pages.

    Upon ticking ‘select all’, the default behavior is to select all rows in current page, and the message in the bottom of the IG shows you the number of selected rows. This is a common behavior, also in other platforms. I'm not a UI/Usability expert, but I'm not convinced yet that (a majority of) end-users would expect differently.

    Now as a developer, you might know the number of records in the dataset behind will be limited to a number of records such that it won't be a problem to load them all. If that is the case, and you want to enable selecting all records in the dataset, you can make the conscious decision to enable next configuration, where the ‘persistSelection’ and ‘loadIncompleteSelection’ options are relevant:

    function(options)
    {
        options.defaultGridViewOptions = {
            persistSelection: true
        };
        return options;
    }
    

    https://docs.oracle.com/en/database/oracle/apex/24.1/aexjs/grid.html#persistSelection

    This will persist the selection on the records in the model, and so the scope will extend the current page. Now, when ticking ‘select all', the default behavior is the currently loaded rows are selected, but the user gets an option (as shown in bottom of the IG) to load all rows from the dataset. If clicking on that, all rows will be loaded and selected.

    This behavior can be overruled - instead of ‘on demand’, you can also automatically load all rows by setting the 'loadIncompleteSelection' option, see https://docs.oracle.com/en/database/oracle/apex/24.1/aexjs/grid.html#loadIncompleteSelection

    For more on the IG options and underpinnings see the excellent JS doc and many blog items available to us. In addition we have the ‘IG Cookbook’ which has the above option covered in page 9, where an example is given on increasing the salary of all the selected employees by a given percent.

  • derik.tran OP 9 months ago

    While I agree about protecting the browser as the dataset can be out of control, but from the users do not care and will misunderstand it.  “Select All” means SELECT ALL.  Don't call it select all if that's the case.  Relabel it to Select 1-25/1-50, or “Page Select”.

  • karel ekema OP 9 months ago

    Select all checkboxes as shown or select all rows in the dataset. Matter of perspective. But I agree it would be beneficial if the user can clearly see the actual selection scenario.

  • john.snyders APEX Team OP 8 months ago

    As karel has described, this idea has been delivered in APEX 24.1. See https://docs.oracle.com/en/database/oracle/apex/24.1/htmrn/changed-behavior.html#GUID-4932E3E9-41B7-4102-8A8D-9581E8FBAA64 . We missed marking it as delivered until now.

    With all other APEX reports select all (implemented manually) means all in the current page because all other reports (except template component reports) only support page pagination. So this confusion over what “All” means really applies to scroll pagination. The biggest problem with IG prior to 24.1 is that it would fib about the number of selected records in some cases. This is changed. It now reports what is actually selected. The combination of scroll pagination + show total rows will enable the “load all” link. 

    If you need more control over this the grid widget API options can be used.