Q: How can I selectall visible rows in an icefaces ace:datatable? It doesn't look like the ace:datatable component has a selectall/deselectall functionality...unless you shift+click on the table directly.
I DON'T want to perform an ajax submit and modify the RowStateMap because:
a) I'd rather not do any submits until the form submission
b) RowStateMap.setAllSelected() selects ALL rows in the table regardless of visibility.
Any ideas?
Perhaps this can help.  The datatable.js file for icefaces has a method:
ice.ace.DataTable.prototype.doMultiRowSelectionEvent = function (lastIndex, current)

I tried running this directly:
<h:commandButton value="Select All" 
    onclick="ice.ace.DataTable.prototype.doMultiRowSelectionEvent(0,
    ice.ace.jq('.ui-datatable-data').children().last()); return false;"/>                                

But that didn't seem to work.

A: So I created a function "doSelectAllRows" which is a copy of "doMultiRowSelectionEvent" but has the following changes:
ice.ace.DataTable.prototype.doSelectAllRows = function () {

    var self = this,
        tbody = ice.ace.jq(this.jqId).find('.ui-datatable-data'),
        elemRange = tbody.children(),
        deselectedId, firstRowSelected;

    // Sync State //
    self.readSelections();

