Fun with Forms

"Fun"!

This weekend I was working on some basic ASP.NET input forms inside an existing application. The forms can be opened for read mode, or for edit mode - as you might expect from a form! There was some C# code which was setting the textboxes to be enabled or disabled (but still visible) depending on the appropriate edit mode, and I naievely figured it'd be pretty easy to throw in some css to simply remove the textbox borders when the form was being viewed, which would make the data look like labels.

Labels being what should have been used in this case all along. I'll state that now for the record, so you know I get it. Because if you search about a bit on this topic you'll get a lot of people simply saying "Don't use a Textbox with enabled=false", which is really helpful. Yes, it's better to use labels - but sometimes you might have a good reason for doing things in a less than ideal way, and in that case it's less than helpful reading 394812 forum posts from smart asses simply saying "Don't do that". Ahem. I'm finished now.

Anyhow, I quickly found out that a css class for input[disabled] was probably the closest I there was for styling Textboxes with Enabled="False", and it worked fine in Firefox:

input[disabled]
{
    border: none;
    color: #000;
    background-color: #fff;
}

This also works in IE7, with one exception - you can't control the text colour. Which is annoying, because the default colour that IE7 uses to denote a disabled field is an incredibly light grey. In fact annoying is the wrong word to use because it's a dealbreaker on any form where light grey happens to blend in, which is a fair few of them.

Next, I tried similar experiments using ReadOnly="true" on my Textbox - all to no avail.

Sticking with the ReadOnly theme, I decide to test programatically setting the Textbox CssClass property at runtime, at the same time where the Textboxes have their ReadOnly property set.

While I'm throwing together a quick css class for the 'enabled' and 'disabled' versions of my form inputs I notice something strange. As I only want to disable the borders when the field is 'ReadOnly' (so it looks like the control I should be using, which is a label). So I try the bare minimum:

.formInputReadOnly
{
    border: none;
}

Which works in Firefox, but of course not in IE7. In IE7, the borders are still showing up. However, when I add a background-color then it works in both browers:

.formInputReadOnly
{
    border: none;
    background-color: #fff;
}

Interesting. Don't you love cross browser compatibility work? I do.

The overall final solution isn't pretty, but it'll do for now. Time is of the essence here, and there were a lot of forms in this solution already using this ReadOnly Textbox approach, which is why adding asp:Labels and showing/hiding them as required was going to take too much time.

The requirement to store a css class in my codebehind is so horrible that it makes me cringe. It breaks every good approach to UI/Code separation that exists. However, this needed to be sorted in 0 time and with minimal extra coding (including declarative additions of 2938923 extra label fields!). At least I know what I'm doing is nasty, and sometimes that's all that counts.

 Print | Posted on Sunday, September 16, 2007 7:44 PM | Filed Under [ ASP.NET Web Development ]



Feedback

No comments posted yet.


Post Comment

Title  
Name  
Email
Website / Url
 

Your comment

   
Ensure the word in this box says 'orange':
 
Please add 2 and 5 and type the answer here:





Due to excessive comment spam, all comments are now being moderated. If you're a comment spammer then you're wasting your time here. Your comments will not be published - ever.


About me

My name is Ross Hawkins and I'm a developer, consultant, business owner and writer based in Auckland, New Zealand (pictured below!). My current work revolves around ASP.NET, C#, jQuery, Ajax, SQL Server, and a mix of other Microsoft development technologies.

I also have about 15 years of experience with IBM Lotus Notes/Domino and associated technologies. While Notes/Domino is no longer my primary focus I still like to dabble and keep my skills up to date.

I own and run 2 businesses - Hawkins Consulting Services, and Ignition Development.

Bethells Beach, located in sunny West Auckland, New Zealand




Subscribe

Subscribe to this feed


Search




Popular Content

Troubleshooting WebResource.axd

The .NET 2.0 framework changed the way clientside JavaScript is delivered to the browser. Previously, ASP.NET 1.1 used the aspnet_client directory whereas now 2.0 uses WebResource.axd.

Published on October 8, 2006

jQuery Wildcard Selectors - some simple examples

I wrote about jQuery wildcard selector syntax briefly back in 2009, and since then that post has received a lot of views – way more than a post that brief should ever have seen..

Published on October 14, 2011

Microsoft AJAX Extensions: Sys.Debug is null or not an object

One of the breaking changes which was made with the 1.0 release of the Microsoft Ajax Extensions was the renaming of the 'Debug' class to 'Sys.Debug' for reasons of compatiability with other frameworks. Breaking changes like this can often be a source of frustration..

Published on May 22, 2007

Simple ASP.NET Character Counter

A textbox character counter is a pretty simple piece of functionality, and there's a lot of different ways to apply one to your application. The following method is nice and simple, and can be done using only clientside JavaScript if required, or combined with server side code in order to create a more dynamic effect

Published on December 4, 2006

Simple ASP.NET Character Counter - with Master Page Support

A quick update to my previous character counter article adding some changes for those using it with Master Pages.

Published on February 7th, 2009

Adding Tooltips to Gridview Headers

As the title says, this is a very simple but dynamic way of achieving tooltip text on a header column. It's not overly flash, but it's lightweight and quick to implement.

Published on April 15, 2007

SQL Server Web Report Viewer Issues on Windows 2008 Server/IIS7

A fix for another AXD related issue, this time with the SQL Server Web Report Viewer Control which was being served up via IIS7 on a Windows 2008 server.

Published on June 2, 2007
Updated on April 10, 2008





Archives

May, 2012 (1)
April, 2012 (4)
March, 2012 (2)
February, 2012 (4)
January, 2012 (3)
December, 2011 (3)
November, 2011 (8)
October, 2011 (9)
September, 2011 (8)
August, 2011 (5)
July, 2011 (4)
June, 2011 (7)
May, 2011 (5)
April, 2011 (3)
March, 2011 (8)
February, 2011 (4)
January, 2011 (3)
December, 2010 (8)
November, 2010 (5)
October, 2010 (6)
September, 2010 (7)
August, 2010 (11)
July, 2010 (12)
June, 2010 (8)
May, 2010 (8)
April, 2010 (4)
March, 2010 (8)
February, 2010 (6)
January, 2010 (12)
December, 2009 (13)
November, 2009 (11)
October, 2009 (12)
September, 2009 (12)
August, 2009 (2)
July, 2009 (7)
June, 2009 (12)
May, 2009 (9)
April, 2009 (9)
March, 2009 (9)
February, 2009 (8)
January, 2009 (7)
December, 2008 (6)
November, 2008 (7)
October, 2008 (9)
September, 2008 (12)
August, 2008 (9)
July, 2008 (6)
June, 2008 (24)
May, 2008 (13)
April, 2008 (16)
March, 2008 (8)
February, 2008 (10)
January, 2008 (1)
December, 2007 (14)
November, 2007 (11)
October, 2007 (11)
September, 2007 (13)
August, 2007 (11)
July, 2007 (5)
June, 2007 (15)
May, 2007 (11)
April, 2007 (9)
March, 2007 (9)
February, 2007 (10)
January, 2007 (8)
December, 2006 (18)
November, 2006 (11)
October, 2006 (14)
September, 2006 (9)
August, 2006 (10)
July, 2006 (4)
June, 2006 (4)
May, 2006 (6)
April, 2006 (3)
February, 2006 (6)
January, 2006 (10)
September, 2005 (2)
August, 2005 (4)

Post Categories

ASP.NET
AJAX
Amusing
NZ
NZ Trains
Notes/Domino
Visual Studio
Web Development
Miscellaneous
Me
Rugby
C#
SQL