This can happen if the checkbox/ radio buttons are selected quickly. This is an intended behaviour to avoid unexpected consequences of executing multiple actions.
There is an event queue, but an action is not performed if there is event to be processed in queue, and hence subsequent action does not perform. In the of case of post value for example it might be fine to queue the action(s) and fire them subsequently, but there could be many action combinations that might change the context for next action; Scenarios like refresh section for example. The system deliberately does this to avoid executing successive actions where it might cause unexpected issues.
The event infrastructure that fires the actions on UI events (such as click, change etc.) acts in a serial, blocking way. This means until one action is completed, another is not fired and ignored. This design is to avoid unwanted consequences of executing multiple conflicting actions.
You can implement a variety of local changes to address the quick interactions - they can somehow stop the user from executing actions too quickly, so the Activity in the server gets enough time to execute. Two suggested approaches -
1. Disabling the checkboxes in the grid till the actions complete.
2. Show a busy indicator until the actions completes.
It might let a little more complex if you do that, since the busy indicator would have to be triggered at harness level then. I dont have the code/process for that handy right now. We might need additional js for that at harness level. If you really need to show it on the centre of the screen, maybe other members here can help you with the steps to do that.
Since the wait period is very small, I think you can go ahead with the localized busy indicator.