加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – DataFormatString上的自定义NumberFormatInfo

发布时间:2020-12-16 07:30:51 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET Gridview,其BoundField绑定到十进制值.我使用以下代码将十进制数格式化为货币值: DataFormatString="{0:C}" 我们有一个NumberFormatInfo的自定义实现,它删除了货币符号并修改了数千个分隔符.通常这种格式适用于: myDecimal.ToString("C",m
我有一个ASP.NET Gridview,其BoundField绑定到十进制值.我使用以下代码将十进制数格式化为货币值:

DataFormatString="{0:C}"

我们有一个NumberFormatInfo的自定义实现,它删除了货币符号并修改了数千个分隔符.通常这种格式适用于:

myDecimal.ToString("C",myCustomNFI);

如何在Gridview的BoundField元素上指定自定义NumberFormatInfo?

谢谢

解决方法

这可以使用自定义绑定字段来完成.从自定义BoundField类开始.下面我尝试遵循您的命名约定.

namespace CustomBoundField
{
    public class NFIBoundField : System.Web.UI.WebControls.BoundField
    {
        protected override string FormatDataValue(object dataValue,bool encode)
        {
            if (dataValue == null || dataValue == System.DBNull.Value)
                return "";

            if (base.DataFormatString == string.Empty)
                return dataValue.ToString();

            // Format as you wish based on dataValue and DataFormatString argument
            return string.Format("{0}",dataValue);
        }
    }
}

在.ASPX文件中注册控件:

<%@ Register Namespace="CustomBoundField" TagPrefix="custom" %>

在GridView中引用自定义BoundField:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
    <Columns>
        <custom:NFIBoundField  DataField="Price" HeaderText="Price" DataFormatString="{0:NFI}"/>
    </Columns>
</asp:GridView>

您将需要在FormatDataValue()内部进行游戏以获得所需的格式.

几条评论:

>如果您想要自定义BoundField
处理多种格式,解析
base.DataFormatString来获取
格式化类型.换一种说法,
提供{0:NFI}或{0:NFI2}
代码前端可能导致不同
如果您在FormatDataValue中容纳此格式,则格式化.
>您可能想要考虑创建
你自己的格式提供者而不是
放置所有格式化逻辑
在FormatDataValue内部
功能.

这种方法应该对你有用.祝你好运.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读