views:

3443

answers:

4

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?!

A: 

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");
James
A: 

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.

AndreasKnudsen
A: 

thanks dude, this was very helpful

Vote my question/answer up then!
James
A: 

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.

Ashraf Sabry