473,388 Members | 1,230 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,388 software developers and data experts.

RangeFieldValidator in ASP.NET 1.1

Hi, I have a RangeFieldValidator in my Web Form to validate input of
monetary. I set current thread's culture to "FR-CA", and I tried following
ways

valCost.MaximumValue = (99999.99).ToString("N2");
I get run time error "The value '99 999,99' of the MaximumValue property of
'valCost' cannot be converted to type 'Currency'."

valCost.MaximumValue = (99999.99).ToString("C");
I get run time error "The value '99 999,99 $' of the MaximumValue property
of 'valCost' cannot be converted to type 'Currency'."

valCost.MaximumValue = "99999.99";
I get run time error "The value '99999.99' of the MaximumValue property of
'valCost' cannot be converted to type 'Currency'."

Since this is a web application which supports multiple languages at
run-time (users can select a language as they wish), how can I dynamically
set the max value to the validator to support all languages?

Thanks for any syggestion.

--
WWW: http://hardywang.1accesshost.com
ICQ: 3359839
yours Hardy
May 11 '06 #1
1 1602
Hi Hardy,

Thank you for posting.

As for the ASP.NET 1.x RangeValidator control's currency validating
problem, based on my research, here are some of my understanding and
suggestion:

The RangeValidator's Validation on String or Currency does support
different Culture(globalize) scenario. And actually, the code logic is:

1. The validator control will first retrieve the string value from the
validated target control and the Min , Max property, then convert them to
the certain DAta Type. If its currency value, it will convert it from
culture specific value into Culture Netural value.

2. After #1, then perform comparing on the converted value.

So as for the MaximumValue and MinimumValue, it does support localized
value. However, we can not add the currency sign (such as $, € ....) into
it. So we should use the "N" flag when formating the decimal value. Here is
the test page I used to dynamically set the RangValidator's range
properties according to the runtime thread culture:

========================
private void Page_Load(object sender, System.EventArgs e)
{
CultureInfo ci = new CultureInfo("de-DE");
Thread.CurrentThread.CurrentCulture = ci;

decimal dv1 = 222434.4343M;
decimal dv2 = 444434.4343M;

rv.MinimumValue = dv1.ToString("N2",
Thread.CurrentThread.CurrentCulture);
rv.MaximumValue = dv2.ToString("N2",
Thread.CurrentThread.CurrentCulture);
Response.Write(
string.Format("<br/>dv1: {0:N2}, dv2: {1:N2}", dv1, dv2)
);

}

===================================

Hope this helps.

Regards,

Steven Cheng
Microsoft Online Community Support
==================================================

When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.

==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

May 12 '06 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.