Thank you so much F-ES Sitecore for taking the time to answer this.
I did exactly as you suggested and it worked straight away.
The only thing that I had to change was the dropdownlist event from 'onclick' to 'onchange'. After doing that it now works exactly as I intended.
I never would have guessed that targeting the property 'text' instead of 'value' could be the problem.
Having thought over the issue for some time I have rationalised what is going on here.
I am no expert in this but this is just how I see it.
When the asp:textbox is rendered by the browser it is rendered as an HTML input element of type text like this
<input type="text" ...../>
The change is able to be seen on the screen.
So, even though what we see on the screen has changed, the asp:textbox text property has not changed.
And that is why the new value on the screen is not posted back to the server.
The solution is to replace the asp:textbox with an HTML input element of type 'text'. Then the screen update works and the postback of the value also works.
If anybody knows how to do that I am sure that a lot of people would like to know.