Daniel,
I'd recommend to leave custom form control alone and try to invalidate cache in the web part code. I'd do that in a setter method of your property:
public YourObjectCalss RecordNumber
{
get { return _recordNumber; }
set
{
if (value != _recordNumber)
{
//TODO: invalidate cache
}
_recordNumber= value;
}
}
I guess, this is the most convenient place to do this as this.ShortClientID is available there.
I'm not sure there is save event for web part that you could override.