Actions and AllowMultiSelect
Both the ExecuteRecordOperation and ExecuteCLRAction action types support <common:AllowsMultiSelect />, which adds check boxes to the list and enables the action to be executed against multiple selected items.
Use a Custom Action to Operate on All the Records as a Group
However, ExecuteRecordOperation will end up executing the record operation against each selected item individually. This makes sense because the spec name implies it operates on a 'record' (singular) and the spec requires for its ActionContext an individual ID field such as the FOODBANKTXDETAILID used in the figure above.
However, the ExecuteCLRAction provides a bit more flexibility to operate on all of the records as a group. For Web Shell, these Custom Actions are implemented in a custom javascript file. Within that file, you can access a host object which gives you the context you need for the action. You may already be using host.getContextRecordId() to access your context ID. However, you can also use host.getContextRecordIds() in order to obtain an array of IDs for the selected records.
executeAction: function (callback) {
var host = this.host,
ids = host.getContextRecordIds();
// Call a dataform and pass all of the IDs as a collection field in order to do a combined, bulk operation
}