zoukankan      html  css  js  c++  java
  • 【新特性速递】自定义数字输入框的小数分隔符和千分位分隔符

    FineUIPro/Mvc/Core的下个版本(v6.3.0),我们会为数字输入框增加DotSeparator和CommaSeparator,对于特殊语种会非常有用。

    比如在法语环境下,小数分隔符和千分位分隔符和我们正常的认知是不同的。

    下面这个数字(以字符串表示):

    "1,682.80"

    在法语环境下,应该写作:

    "1.682,80"

    为了能适配这种需求,我们在新版本向 NumberBox 控件新增两个属性,来自定义分隔符。

    <f:NumberBox Label="小数" ID="NumberBox1" runat="server" Text="-12345.6789" EnableCommas="true"
    	Required="true" ShowRedStar="true" DecimalPrecision="2" DotSeparator="," CommaSeparator="." />
    <f:NumberBox Label="正整数" ID="NumberBox2" NoDecimal="true" NoNegative="true" Text="987654321"
    	EnableCommas="true" ShowTrigger="false" runat="server" CommaSeparator=" " />
    

    显示效果:

      

     

    一个重要的原则:不管页面上显示的格式如何,对控件赋值或者获取都是标准的数字格式(也即是去除千分位,小数点用点号表示的字符串)!

    理解这一点非常关键。

    下面提供一下数字类型和字符串类型(标准格式)相互转换的代码:

    ////法语
    System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("es");
    Decimal num1 = Convert.ToDecimal("-62.345,66");
    ////中文
    //System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN");
    //Decimal num1 = Convert.ToDecimal("-62,345.66");
    
    // 数字类型转换为字符串类型(标准格式):"-62345.66"
    var num1str = num1.ToString(NumberFormatInfo.InvariantInfo);
    
    // 字符串(标准格式)转换为数字类型:-62345.66
    var num2 = Convert.ToDecimal(num1str, NumberFormatInfo.InvariantInfo);
    
    // true
    var checkequal = num1.Equals(num2);
    

    注:FineUICore v6.3.0 计划在 2020-05-15 发布,官网示例已更新。

    https://pro.fineui.com/#/form/numberbox_separator.aspx 

  • 相关阅读:
    Razor中@:和text
    Razor返回HTML字符串
    EPPlus使用
    ASP.NET MVC使用AllowAnonymous特性跳过授权验证
    下拉框获取json文件的数据
    SpringBoot 监听机制
    MybatisPlus Warpper实现复杂查询
    整合MybatisPlus心得
    MybatisPlus性能分析插件
    MybatisPlus物理删除、逻辑删除
  • 原文地址:https://www.cnblogs.com/sanshi/p/12836430.html
Copyright © 2011-2022 走看看