I have noticed that ValueChanged fires if the user selects a different button in a WebRadioGroup, but that it does not fire if a different button is selected in code (when processing a rowset). Is this the way it is supposed to work?
Yes. If you want that code to run, put it in a method that you call from both places. The reason for this is that it requires even more code to workaround if we fire that code and you didn’t want it to.