Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > how to compare current date to a future date and validate it in ASP.NET

Reply
Thread Tools

how to compare current date to a future date and validate it in ASP.NET

 
 
James P.
Guest
Posts: n/a
 
      07-10-2004
Hello there,

In my asp.net page using VB, I have a date text field in mm/dd/yyyy
format. When a date is entered, I'd like to validate it to make sure
the date is greater than or equal to the current date. If not, I'd
like to display the error message to ValidationSummary.

It seems to make sense to me to use CompareValidator but the problem
is put the current date into CompareValidator. So, I created a hidden
text field in my aspx. In my VB code behind, I load current date to
that text field. Then, I created a CompareValidator to compare this
current date to the text field containing date entered by the user.
In my Page_Load, I have Page.Validate to activate the validation.
When I run it, the first round through, the validationSummary worked
and displayed the warning message I wanted (that date entered can't be
less than current date). However, it did not work after that. I
think the problem is server validation did not work properly.

My alternative way is to use client validation using CustomValidator.
Pass in two date fields: current date and entered date and compare.
Unfortunately, I don't know well neither javaScrip nor any other
script languages to do it. The problem I am having with this approach
is getting current date in the mm/dd/yyyy format so I can compare to
what the user enters in that format. Date() function is javascrip
returns a different format. And I think Now() returns both date and
time.

Any suggestions are greatly appreciated. Thank you in advance,
James
 
Reply With Quote
 
 
 
 
Teemu Keiski
Guest
Posts: n/a
 
      07-10-2004
Hi,

yes you'd use CompareValidator, but you need to give it the value as
correctly formatted to the ValueToCompare property.

First you'd put the validators something like this (I've omitted buttons and
ValidationSummary to keep it concise):

***
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>

<asp:CompareValidator id="compDateDataTypeValidator"
ControlToValidate="TextBox1" Operator="DataTypeCheck"
Type="Date" runat="server" ErrorMessage="You must enter a valid
date"></asp:CompareValidator>

<asp:CompareValidator id="compDateValidator"
ControlToValidate="TextBox1" Operator="LessThan" Type="Date"
runat="server" ErrorMessage="Entered date must be less than current
date"></asp:CompareValidator>
***

Then additionally you'd set in code the ValueToCompare property for the
CompareValidator (compDateValidator) which compares the dates. Like this:

***
compDateValidator.ValueToCompare = DateTime.Now.ToString("MM/dd/yyyy")
***
As you can see, it is given as string and the easiest way is to get it from
DateTime.Now and then format using string formatting so that it passes for
CompareValidator (standard date format based on current locale and culture)

--
Teemu Keiski
MCP, Microsoft MVP (ASP.NET), AspInsiders member
ASP.NET Forum Moderator, AspAlliance Columnist
http://blogs.aspadvice.com/joteke







"James P." <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) om...
> Hello there,
>
> In my asp.net page using VB, I have a date text field in mm/dd/yyyy
> format. When a date is entered, I'd like to validate it to make sure
> the date is greater than or equal to the current date. If not, I'd
> like to display the error message to ValidationSummary.
>
> It seems to make sense to me to use CompareValidator but the problem
> is put the current date into CompareValidator. So, I created a hidden
> text field in my aspx. In my VB code behind, I load current date to
> that text field. Then, I created a CompareValidator to compare this
> current date to the text field containing date entered by the user.
> In my Page_Load, I have Page.Validate to activate the validation.
> When I run it, the first round through, the validationSummary worked
> and displayed the warning message I wanted (that date entered can't be
> less than current date). However, it did not work after that. I
> think the problem is server validation did not work properly.
>
> My alternative way is to use client validation using CustomValidator.
> Pass in two date fields: current date and entered date and compare.
> Unfortunately, I don't know well neither javaScrip nor any other
> script languages to do it. The problem I am having with this approach
> is getting current date in the mm/dd/yyyy format so I can compare to
> what the user enters in that format. Date() function is javascrip
> returns a different format. And I think Now() returns both date and
> time.
>
> Any suggestions are greatly appreciated. Thank you in advance,
> James



 
Reply With Quote
 
 
 
 
Teemu Keiski
Guest
Posts: n/a
 
      07-10-2004
Sorry, I re-read your post and you said date format dd.mm.yyyy. TThen just
change the format string to "dd/MM/yyyy" (or dd.MM.yyyy). /'s are considered
culture-speficic separators to dates and will be replaced with dots.

--
Teemu Keiski
MCP, Microsoft MVP (ASP.NET), AspInsiders member
ASP.NET Forum Moderator, AspAlliance Columnist
http://blogs.aspadvice.com/joteke



"Teemu Keiski" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi,
>
> yes you'd use CompareValidator, but you need to give it the value as
> correctly formatted to the ValueToCompare property.
>
> First you'd put the validators something like this (I've omitted buttons

and
> ValidationSummary to keep it concise):
>
> ***
> <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
>
> <asp:CompareValidator id="compDateDataTypeValidator"
> ControlToValidate="TextBox1" Operator="DataTypeCheck"
> Type="Date" runat="server" ErrorMessage="You must enter a valid
> date"></asp:CompareValidator>
>
> <asp:CompareValidator id="compDateValidator"
> ControlToValidate="TextBox1" Operator="LessThan" Type="Date"
> runat="server" ErrorMessage="Entered date must be less than current
> date"></asp:CompareValidator>
> ***
>
> Then additionally you'd set in code the ValueToCompare property for the
> CompareValidator (compDateValidator) which compares the dates. Like this:
>
> ***
> compDateValidator.ValueToCompare = DateTime.Now.ToString("MM/dd/yyyy")
> ***
> As you can see, it is given as string and the easiest way is to get it

from
> DateTime.Now and then format using string formatting so that it passes for
> CompareValidator (standard date format based on current locale and

culture)
>
> --
> Teemu Keiski
> MCP, Microsoft MVP (ASP.NET), AspInsiders member
> ASP.NET Forum Moderator, AspAlliance Columnist
> http://blogs.aspadvice.com/joteke
>
>
>
>
>
>
>
> "James P." <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) om...
> > Hello there,
> >
> > In my asp.net page using VB, I have a date text field in mm/dd/yyyy
> > format. When a date is entered, I'd like to validate it to make sure
> > the date is greater than or equal to the current date. If not, I'd
> > like to display the error message to ValidationSummary.
> >
> > It seems to make sense to me to use CompareValidator but the problem
> > is put the current date into CompareValidator. So, I created a hidden
> > text field in my aspx. In my VB code behind, I load current date to
> > that text field. Then, I created a CompareValidator to compare this
> > current date to the text field containing date entered by the user.
> > In my Page_Load, I have Page.Validate to activate the validation.
> > When I run it, the first round through, the validationSummary worked
> > and displayed the warning message I wanted (that date entered can't be
> > less than current date). However, it did not work after that. I
> > think the problem is server validation did not work properly.
> >
> > My alternative way is to use client validation using CustomValidator.
> > Pass in two date fields: current date and entered date and compare.
> > Unfortunately, I don't know well neither javaScrip nor any other
> > script languages to do it. The problem I am having with this approach
> > is getting current date in the mm/dd/yyyy format so I can compare to
> > what the user enters in that format. Date() function is javascrip
> > returns a different format. And I think Now() returns both date and
> > time.
> >
> > Any suggestions are greatly appreciated. Thank you in advance,
> > James

>
>



 
Reply With Quote
 
James P.
Guest
Posts: n/a
 
      07-12-2004
"Teemu Keiski" <(E-Mail Removed)> wrote in message news:<uf#(E-Mail Removed)>...
> Sorry, I re-read your post and you said date format dd.mm.yyyy. TThen just
> change the format string to "dd/MM/yyyy" (or dd.MM.yyyy). /'s are considered
> culture-speficic separators to dates and will be replaced with dots.
>
> --
> Teemu Keiski
> MCP, Microsoft MVP (ASP.NET), AspInsiders member
> ASP.NET Forum Moderator, AspAlliance Columnist
> http://blogs.aspadvice.com/joteke
>
>
>
> "Teemu Keiski" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > Hi,
> >
> > yes you'd use CompareValidator, but you need to give it the value as
> > correctly formatted to the ValueToCompare property.
> >
> > First you'd put the validators something like this (I've omitted buttons

> and
> > ValidationSummary to keep it concise):
> >
> > ***
> > <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
> >
> > <asp:CompareValidator id="compDateDataTypeValidator"
> > ControlToValidate="TextBox1" Operator="DataTypeCheck"
> > Type="Date" runat="server" ErrorMessage="You must enter a valid
> > date"></asp:CompareValidator>
> >
> > <asp:CompareValidator id="compDateValidator"
> > ControlToValidate="TextBox1" Operator="LessThan" Type="Date"
> > runat="server" ErrorMessage="Entered date must be less than current
> > date"></asp:CompareValidator>
> > ***
> >
> > Then additionally you'd set in code the ValueToCompare property for the
> > CompareValidator (compDateValidator) which compares the dates. Like this:
> >
> > ***
> > compDateValidator.ValueToCompare = DateTime.Now.ToString("MM/dd/yyyy")
> > ***
> > As you can see, it is given as string and the easiest way is to get it

> from
> > DateTime.Now and then format using string formatting so that it passes for
> > CompareValidator (standard date format based on current locale and

> culture)
> >
> > --
> > Teemu Keiski
> > MCP, Microsoft MVP (ASP.NET), AspInsiders member
> > ASP.NET Forum Moderator, AspAlliance Columnist
> > http://blogs.aspadvice.com/joteke
> >
> >
> >
> >
> >
> >
> >
> > "James P." <(E-Mail Removed)> wrote in message
> > news:(E-Mail Removed) om...
> > > Hello there,
> > >
> > > In my asp.net page using VB, I have a date text field in mm/dd/yyyy
> > > format. When a date is entered, I'd like to validate it to make sure
> > > the date is greater than or equal to the current date. If not, I'd
> > > like to display the error message to ValidationSummary.
> > >
> > > It seems to make sense to me to use CompareValidator but the problem
> > > is put the current date into CompareValidator. So, I created a hidden
> > > text field in my aspx. In my VB code behind, I load current date to
> > > that text field. Then, I created a CompareValidator to compare this
> > > current date to the text field containing date entered by the user.
> > > In my Page_Load, I have Page.Validate to activate the validation.
> > > When I run it, the first round through, the validationSummary worked
> > > and displayed the warning message I wanted (that date entered can't be
> > > less than current date). However, it did not work after that. I
> > > think the problem is server validation did not work properly.
> > >
> > > My alternative way is to use client validation using CustomValidator.
> > > Pass in two date fields: current date and entered date and compare.
> > > Unfortunately, I don't know well neither javaScrip nor any other
> > > script languages to do it. The problem I am having with this approach
> > > is getting current date in the mm/dd/yyyy format so I can compare to
> > > what the user enters in that format. Date() function is javascrip
> > > returns a different format. And I think Now() returns both date and
> > > time.
> > >
> > > Any suggestions are greatly appreciated. Thank you in advance,
> > > James

> >
> >


Teemu,

Thanks a lot for responding and trying to help me. Yes, you got it
right the first time with "mm/dd/yyyy" as I would like. I used your
suggestion and I got "The value 'DateTime.Now.ToString("mm/dd/yyyy")'
of the ValueToCompare property of 'cvDate' cannot be converted to type
'Date'". Any other suggestions are appreciated.

James
 
Reply With Quote
 
Teemu Keiski
Guest
Posts: n/a
 
      07-12-2004
If you see my VB code, it goes through compilation. You have a syntax typo
there. What's *exactly* the code you use for this line?

--
Teemu Keiski
MCP, Microsoft MVP (ASP.NET), AspInsiders member
ASP.NET Forum Moderator, AspAlliance Columnist
http://blogs.aspadvice.com/joteke



"James P." <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) om...
> "Teemu Keiski" <(E-Mail Removed)> wrote in message

news:<uf#(E-Mail Removed)>...
> > Sorry, I re-read your post and you said date format dd.mm.yyyy. TThen

just
> > change the format string to "dd/MM/yyyy" (or dd.MM.yyyy). /'s are

considered
> > culture-speficic separators to dates and will be replaced with dots.
> >
> > --
> > Teemu Keiski
> > MCP, Microsoft MVP (ASP.NET), AspInsiders member
> > ASP.NET Forum Moderator, AspAlliance Columnist
> > http://blogs.aspadvice.com/joteke
> >
> >
> >
> > "Teemu Keiski" <(E-Mail Removed)> wrote in message
> > news:(E-Mail Removed)...
> > > Hi,
> > >
> > > yes you'd use CompareValidator, but you need to give it the value as
> > > correctly formatted to the ValueToCompare property.
> > >
> > > First you'd put the validators something like this (I've omitted

buttons
> > and
> > > ValidationSummary to keep it concise):
> > >
> > > ***
> > > <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
> > >
> > > <asp:CompareValidator id="compDateDataTypeValidator"
> > > ControlToValidate="TextBox1" Operator="DataTypeCheck"
> > > Type="Date" runat="server" ErrorMessage="You must enter a valid
> > > date"></asp:CompareValidator>
> > >
> > > <asp:CompareValidator id="compDateValidator"
> > > ControlToValidate="TextBox1" Operator="LessThan" Type="Date"
> > > runat="server" ErrorMessage="Entered date must be less than

current
> > > date"></asp:CompareValidator>
> > > ***
> > >
> > > Then additionally you'd set in code the ValueToCompare property for

the
> > > CompareValidator (compDateValidator) which compares the dates. Like

this:
> > >
> > > ***
> > > compDateValidator.ValueToCompare = DateTime.Now.ToString("MM/dd/yyyy")
> > > ***
> > > As you can see, it is given as string and the easiest way is to get it

> > from
> > > DateTime.Now and then format using string formatting so that it passes

for
> > > CompareValidator (standard date format based on current locale and

> > culture)
> > >
> > > --
> > > Teemu Keiski
> > > MCP, Microsoft MVP (ASP.NET), AspInsiders member
> > > ASP.NET Forum Moderator, AspAlliance Columnist
> > > http://blogs.aspadvice.com/joteke
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > "James P." <(E-Mail Removed)> wrote in message
> > > news:(E-Mail Removed) om...
> > > > Hello there,
> > > >
> > > > In my asp.net page using VB, I have a date text field in mm/dd/yyyy
> > > > format. When a date is entered, I'd like to validate it to make

sure
> > > > the date is greater than or equal to the current date. If not, I'd
> > > > like to display the error message to ValidationSummary.
> > > >
> > > > It seems to make sense to me to use CompareValidator but the problem
> > > > is put the current date into CompareValidator. So, I created a

hidden
> > > > text field in my aspx. In my VB code behind, I load current date

to
> > > > that text field. Then, I created a CompareValidator to compare this
> > > > current date to the text field containing date entered by the user.
> > > > In my Page_Load, I have Page.Validate to activate the validation.
> > > > When I run it, the first round through, the validationSummary worked
> > > > and displayed the warning message I wanted (that date entered can't

be
> > > > less than current date). However, it did not work after that. I
> > > > think the problem is server validation did not work properly.
> > > >
> > > > My alternative way is to use client validation using

CustomValidator.
> > > > Pass in two date fields: current date and entered date and compare.
> > > > Unfortunately, I don't know well neither javaScrip nor any other
> > > > script languages to do it. The problem I am having with this

approach
> > > > is getting current date in the mm/dd/yyyy format so I can compare to
> > > > what the user enters in that format. Date() function is javascrip
> > > > returns a different format. And I think Now() returns both date and
> > > > time.
> > > >
> > > > Any suggestions are greatly appreciated. Thank you in advance,
> > > > James
> > >
> > >

>
> Teemu,
>
> Thanks a lot for responding and trying to help me. Yes, you got it
> right the first time with "mm/dd/yyyy" as I would like. I used your
> suggestion and I got "The value 'DateTime.Now.ToString("mm/dd/yyyy")'
> of the ValueToCompare property of 'cvDate' cannot be converted to type
> 'Date'". Any other suggestions are appreciated.
>
> James



 
Reply With Quote
 
phamtasmic
Guest
Posts: n/a
 
      07-12-2004


Teemu,

Here is what I used:
<asp:CompareValidator id="cvCompareDate" style="Z-INDEX: 115; LEFT:
456px; POSITION: absolute; TOP: 180px"
runat="server" ControlToValidate="txtFutureEventDate"
ErrorMessage="toot toot" Operator="GreaterThanEqual"
Type="Date"
ValueToCompare='DateTime.Now.ToString("MM/dd/yyyy")'></asp:CompareValida
tor>

I even tried ("M/d/yyyy"). I got the same error message like I describe
earlier.

James

*** Sent via Devdex http://www.devdex.com ***
Don't just participate in USENET...get rewarded for it!
 
Reply With Quote
 
Teemu Keiski
Guest
Posts: n/a
 
      07-13-2004
You can't assign the value on inline code that way. I used it in
code-behind, but anyway, it should be in code (in your case put code in
Page_Load, for example) to use it the way I demonstrated

*** With the code ***
cvCompareDate.ValueToCompare = DateTime.Now.ToString("MM/dd/yyyy")
******************

Another way with inline way would be with binding. e.g set the attribute
like this:

***With inline ***
ValueToCompare='<%#DateTime.Now.ToString("MM/dd/yyyy")%>'
***************

Additionally you would need to call DataBind for the CompareValidator
control in question (or if suits, for the whole Page at the same time with
Page.DataBind() ) to get this way to work
--
Teemu Keiski
MCP, Microsoft MVP (ASP.NET), AspInsiders member
ASP.NET Forum Moderator, AspAlliance Columnist
http://blogs.aspadvice.com/joteke

"phamtasmic" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
>
>
> Teemu,
>
> Here is what I used:
> <asp:CompareValidator id="cvCompareDate" style="Z-INDEX: 115; LEFT:
> 456px; POSITION: absolute; TOP: 180px"
> runat="server" ControlToValidate="txtFutureEventDate"
> ErrorMessage="toot toot" Operator="GreaterThanEqual"
> Type="Date"
> ValueToCompare='DateTime.Now.ToString("MM/dd/yyyy")'></asp:CompareValida
> tor>
>
> I even tried ("M/d/yyyy"). I got the same error message like I describe
> earlier.
>
> James
>
> *** Sent via Devdex http://www.devdex.com ***
> Don't just participate in USENET...get rewarded for it!



 
Reply With Quote
 
phamtasmic
Guest
Posts: n/a
 
      07-13-2004
Teemu,

You are right about that. I put that code in the Init event for the
textbox to get the current date and it worked.

Thanks a lot for helping,
James


*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Validate Date AND Tme not just date Chris Davoli ASP .Net Web Controls 0 01-28-2009 09:27 PM
setting date format to validate date in ruby Jay Pangmi Ruby 4 08-25-2008 03:57 PM
Compare access db birthday date field with date CZ ASP .Net 1 09-23-2005 04:19 AM
compare date field to current date Michael Haas ASP General 4 02-15-2004 11:30 PM
compare validator to validate date in user control Shailesh Katti ASP .Net Web Controls 1 07-28-2003 11:20 AM



Advertisments