Read-only fields are not stored between roundtrips

We’ve recently upgraded a .NET 1.1 project to 3.5 to benefit from all its goodies. Almost everything went well… with a couple of exceptions.

For a while I’ve been struggling with a stupid bug: read-only fields are not saved during a postback (even with EnableViewState=true).

In this project there are some forms, with fields ( controls) generated dynamically, which means their id’s are not known at design time and on top of that, some are read only (the calendar).

So at first, I did something like this in Page_Load:

string instalationReadyFieldName = "Defaulttemplate1:Content:dtbField1827";
TextBox txtInstalationReady = Page.FindControl( instalationReadyFieldName )
 							as TextBox;
if ( txtInstalationReady != null ) txtInstalationReady.Text =

But on the test server, surprise, the id’s were different and the fields were not sent to server anymore…

After several hours of searching for an elegant solution, I had an “Ahaa!”: I will use jQuery:

So I removed the readonly attribute from the controls and added some little javascript:

// when pressing a key, don't keep the value.
$(".q_inp_date").live("keypress", function(event)
    return false;

where ‘q_inp_date’ is the class added to the date, former read-only controls.


Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s