Roba da lasciarci capelli a mazzi:
perchè funzioni non bisogna impostare la proprietà del controllo con
campodata.ReadOnly = True
come verrebbe naturale fare con i controlli aspnet, bensì con
campodata.Attributes.Add("readonly", "readonly")
...
così funziona.
Il problema era lato server quindi.
Grazie per il supporto!