Click here to Skip to main content
Click here to Skip to main content

A Better ASP.NET Datepicker and Calendar Control

By , 10 Apr 2009
 

Update (11th April 2009)

This control is deprecated. I recommend using a client-side calendar control such as the jQuery UI datepicker.

Introduction

When developing enterprise ASP.NET applications, it is common to require the input of dates. The two solutions provided by .NET and Visual Studio out of the box; using a textbox with validation and using a calendar control, are both flawed. A textbox leaves too much scope for the user to make a mistake with data entry. Should the 15th of January be written '15/1/06', '15/01/06', '15/01/2006', or '1/15/06'? Some users need to have a calendar to allow them to pick the correct date without regard to formatting.

Eclipse Web Solutions ASP.NET DatePicker Control

The ASP.NET calendar control

However, for power users this can become much too slow, and the calendar control consumes too much precious screen realestate. The power user is capable of learning the acceptable date formats and would prefer to be able to enter the date in a textbox. This is also good for data entry, where the user does not want to have to leave the keyboard to use the mouse to pick a date.

What is needed is a custom control to combine the best of both worlds. It must allow power users to type a date in a textbox, and it must allow other users to select a date using a calendar control. Most importantly, it should seemlessly allow users to employ a combination of these two approaches.

The Solution

After a brief search of the internet failed to reveal an adequate control, I created the Eclipse Web Solutions DatePicker. The default view of the control features a textbox and a button. The textbox can be used for direct date entry, or the button can be clicked to use a calendar for date selection.

DatePicker in textbox mode

DatePicker in calendar mode

Implementation

The Eclipse Web Solutions DatePicker is implemented as an ASP.NET custom control and compiled with .NET 2.0. You can download the compiled DLL or the complete source code from the Eclipse Web Solutions downloads page. The design of the component is shown in the following diagram:

ASP.NET DatePicker Class Diagram

DatePicker class diagram

Usage

To use the Eclipse Web Solutions DatePicker control with Visual Studio 2005, follow these instructions:

  • Create your web project.
  • Add a reference to EclipseWebSolutions.CustomControls.dll. If you wish to debug the controls code use the debug version, else use the release version.
  • Right-click the background of the Visual Studio toolbox and click 'Choose Items...'
  • Click the browse button and find the EclipseWebSolutions.CustomControls.dll that you previously added a reference to.
  • Find the DatePicker in the toolbox and drag it onto a web page.

The DatePicker control at design time
  • Select the DatePicker and set any properties that you wish to vary. The CollapseButtonLabel and ExpandButtonLabel properties change the button labels from the default '-' and '+'. The DateFormatString property changes the date format string that is used to display the date in the textbox from the default 'dd/MM/yy'.
  • If you wish to change any properties of the textbox, calendar or button controls, you can do so in the code behind by accessing the control's public properties.
  • In your application, access the value of the DatePicker through its DateValue property. If the DateValue == DateTime.MinValue then no date has been selected or an invalid date string was typed into the textbox.
  • Run your program!

History

  • Update (11th April 2009) - This control is deprecated. I recommend using a client-side calendar control such as the jQuery UI datepicker.
  • Update (25th Jan 2007) - New Version now supports Microsoft AJAX 1.0 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

liammclennan
Web Developer
Australia Australia
Member
Liam McLennan has been developing for the internet since 2001. He is passionate about delivering top quality I.T. solutions that address his customer's needs.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 2memberOakman11 Apr '09 - 7:09 
I think you need to change your title.
Questionhow to change the date format in order save to databasemembercindywoo8128 Aug '07 - 14:37 
the elicplise date picker date format is dd/mm/yyyy. In order the save to database, need to change to mm/dd/yyyy. May I know how to convert for this date picker. thanks.
AnswerRe: how to change the date format in order save to databasememberWizardWu3 Nov '08 - 2:38 
i saw the author has released the custom Regular Expression property.   http://www.codeproject.com/KB/webforms/WizardGridView.aspx[^]
GeneralHere is another one.memberMichael Sync25 Jan '07 - 18:30 
Nice one.   I also wrote one article about using Yahoo Calendar in ASP.NET 1.1 and 2.0. Check it out.   Using ASP.NET Calendar Control and Yahoo.UI.Calendar in ASP.NET 1.1   Let me know if you have any comment.   Thanks and Regards, Michael Sync   Blog:...
GeneralRe: Here is another one.memberkarpar14 Feb '07 - 2:14 
hey Hi .. i liked the way you designed the calendar control. Can we have multiple date select in thesame? If yes, How can we go for it?
GeneralRe: Here is another one.memberMichael Sync14 Feb '07 - 15:58 
Hi Karpar,   >>Can we have multiple date select in thesame? Yahoo.UI.Calendar (the one that I used in my article) support multiple date select. but you need to change some JS codes for it.   Thanks and Regards, Michael Sync   Blog: http://michaelsync.net
Generallicensememberrizomatosa13 Jan '07 - 6:11 
2 question: - what kind of license is applied? - the link to files seems to broken.   bye
GeneralRe: licensememberliammclennan13 Jan '07 - 10:55 
There are a number of licenses available, as detailed on the licensing page[^]. However, there is a lite version that is freeware.   Liam McLennan liam@eclipsewebsolutions.com.au www.eclipsewebsolutions.com.au
GeneralUpdatememberLawrence Botley1 Jan '07 - 7:23 
Hey,
 
What would be the advantages over using your control over the ASP.NET control?
 
The textbox and popup are obviously a bonus but wouldnt it be better to build it from the ground up and use javascript for data navigation instead of rely on server posts?
 
Just a thought
 
Lawrence
 
Within the twentieth century, an ultraintelligent machine will be built and that it will be the last invention that man need make.
 
I.J. Good

GeneralRe: Updatememberliammclennan1 Jan '07 - 9:52 
The advantage over over the ASP.NET control is that power users dont have to use the calendar interface. It is much faster to type the date directly. I prefer not to build controls that rely heavily on javascript. I find server based controls to be more robust.   Liam McLennan...
GeneralRe: UpdatememberLawrence Botley1 Jan '07 - 10:49 
Hmmmm.. Server controls would be more robust if Javascript isnt implemented correctly.   Obviously there will always be bugs but javaScript is a far better technology that fits the bill of the application.   I dont think the end user should suffer in usability just because...
GeneralRe: UpdatememberSacha Barber25 Jan '07 - 6:52 
I GO WITH lAWRENCE ON THIS ONE.   Javascript is Ok, if done well.     sacha barber
NewsUpdate - new DatePicker Availablememberliammclennan21 Dec '06 - 16:58 
I have made significant updates to this control, including built-in validation, AJAX support and displaying the calendar on a higher layer. You can get the improved control at http://www.eclipsewebsolutions.com.au/Default.aspx?tabid=56[^]   Liam McLennan liam@eclipsewebsolutions.com.au...
GeneralRe: Update - new DatePicker AvailablememberFunster10 Sep '10 - 2:35 
Hi Liam,   your link given above gives the following info   Server Error in '/' Application. --------------------------------------------------------------------------------   The resource cannot be found.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130516.1 | Last Updated 11 Apr 2009
Article Copyright 2006 by liammclennan
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid