I've refactored (and better implemented) the necessary GridState updates in a separate pull request. See https://github.com/silverstripe/silverstripe-framework/pull/2522