Reputation: 2566
Ok guys and gals, here is my problem:
I've built a custom control that uses a textbox to present data to the user.
When the user interacts with the control the value of that textbox is altered with client side javascript.
I also have a button on my page. When the user clicks the button I want to take the value from the custom control (aka. the textbox) and use it elsewhere.
So, in the onClick event for the button I do something like this:
this.myLabel.Text = this.customControl.Value;
The problem is that the custom control does not have the new textbox value available. In the custom control the textbox is empty. However, I can see the correct value in the Request.Form collection.
Am I doing something wrong here? Or should I be reading from Request.Form?!
Upvotes: 1
Views: 4684
Reputation: 3182
Strange that you answered yourself! In fact, I've faced this nuisance before, and cost me some time until I found a note in the visual studio documentation describing the cause, you can read it here http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.readonly.aspx in the "important note" section.
Upvotes: 0
Reputation: 3491
Interesting, I didn't realize readonly TextBox doesn't get updated from viewstate.
When I pull stunts like that in my web sites, I usually setup asp:HiddenFields that I dump data into with javascript (gotta love jQuery), and that I read values from on postbacks.
Keeps things cleaner I find.
Upvotes: 2
Reputation: 2566
Ah ha! I've solved my own problem!
Because I had set Readonly="True" on the textbox control ASP.NET was not picking up it's value from the postback.
Instead I should have manually added the readonly attribute to the textbox during my user control construction.
eg.
this.textBox.Attributes.Add("readonly", "readonly");
Upvotes: 1