我怎样才能转身?小数点为","在文本框中输入十进制值时,使用逗号

本文关键字:quot 十进制 输入 文本 小数点 转身 | 更新日期: 2023-09-27 18:05:10

请帮忙处理这件事。我没有找到解决办法。

我建立了一个WebForm,允许输入一些数据(从多个控件,一个文本框是包含一个数字,意味着一个数量)。WebForm是用ASP编写的。. NET 4.0(带c#).

WebForm将控件中的所有值传递到SQL Server 2014版本的数据库中。问题来了:web应用程序应该在德语环境中运行。(我的机器和其他可以访问应用程序的机器)。

我的问题是,即使将区域设置设置为德语,我仍然必须在文本框中输入带有"。"小数点的十进制值,而不是使用逗号","来输入数量。

如果我输入带逗号的十进制值,它们会被粘合在一起整数,而不是小数。例如11123,34记录在表1112324 1123.45在表中记录为1123,45

注意:我设置了数据库中的字段,其中这个TextBox地址为SQL表定义中的"Money"类型。

当通过GridView访问表的内容时控件在另一个webform中,我得到所有的值与","逗号,无论区域设置是设置为德语还是英语。

为Quantity存储的数值格式将其表示形式从","逗号变为"。"点,反之亦然,只有在SQL Server(我的意思是在SQL Server Management Studio中)上直接对表运行select时,或者当我在SQL Server上"SET LANGUAGE to GERMAN/BRITISH"时。

我的问题是:
  • 在文本框中输入与","相同的数值,并在SQL表中使用","小数点进行处理,我应该怎么做?

我不希望用户在输入时使用小数分隔符"。",并在读取时使用小数分隔符","数量超出数据库

非常感谢您的帮助

我怎样才能转身?小数点为","在文本框中输入十进制值时,使用逗号

正确的解决方案:每个转换值和文本的操作都必须适当指定区域性。

   // formatting/parsing 
   var userCuluture = new CultureInfo("de-de");
   textBox.Text = String.Format(userCuluture, "{0} for {1}", DateTime.Now, 1.99);
   var value = float.Parse(textBoxAmount.Text, userCulture);
   dbProvider.WriteValue(value); // use InvariantCulture inside for formating

穷人版本:更改线程的区域性,使默认区域性用于转换,并调整它,以便当用户的区域性设置为当前时执行对用户数据的操作,并且当InvariantCulture:

时执行数据库操作
   // Manipulation of user's data to use "userCulutre" rules
   Thread.CurrentThread.CurrentCulture = userCulture;
   textBox.Text = String.Format("{0} for {1}", DateTime.Now, 1.99);
   var value = float.Parse(textBoxAmount.Text);
   // DB/file manipulations to use Invariant rules
   Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
   dbProvider.WriteValue(value); // use current culture for formatting/parsing

有许多方法可以管理当前区域性,您可以通过https://www.bing.com/search?q=asp.net+culture找到这些方法,例如在ASP中设置区域性。. MVC应用