使用Eval在ASP.NET C#数据绑定中格式化百分比

使用Eval在ASP.NET C#数据绑定中格式化百分比,c#,asp.net,C#,Asp.net,数据库中有一个列声明为十进制4精度3。我需要将这个数字乘以100(我在存储过程查询中就是这样做的),并将其显示为小数点后只有有效零的小数点。如果结果值小于1%,我想应该在小数点前显示0。显示器应包括一个%标记。例如: 100 % 99.1 % 0.1 % 56 % 0 % 网页正在使用数据绑定: <asp:Label ID="lblTMLY_POL_HLDER_NOTC_PCT" runat="server" Text='<%# Eval("DECIMAL_COL_PR

数据库中有一个列声明为十进制4精度3。我需要将这个数字乘以100(我在存储过程查询中就是这样做的),并将其显示为小数点后只有有效零的小数点。如果结果值小于1%,我想应该在小数点前显示0。显示器应包括一个%标记。例如:

 100 %
 99.1 %
 0.1 %
 56 %
 0 %
网页正在使用数据绑定:

 <asp:Label ID="lblTMLY_POL_HLDER_NOTC_PCT" runat="server" Text='<%# Eval("DECIMAL_COL_PREC_4_SCALE_3") %>'></asp:Label>

我想在数据绑定项中甚至在那里使用字符串格式化函数都可能更容易处理这个问题。理想情况下,我想知道在标记中使用什么格式字符串,以及在代码中如何处理

  <asp:Label ID="lblTMLY_POL_HLDER_NOTC_PCT" runat="server" Text='<%# Eval("DECIMAL_COL_PREC_4_SCALE_3","{00:??????}") %>'></asp:Label>

这就是你要找的吗

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField HeaderText="Id" DataField="Id" />
        <asp:BoundField HeaderText="Name" DataField="Name" />
        <asp:BoundField HeaderText="Actual Value" DataField="Total" />
        <asp:BoundField HeaderText="Using Bound Field" DataField="Total" 
            DataFormatString="{0:0.### %}" />
        <asp:TemplateField HeaderText="Using Eval">
            <ItemTemplate>
                <asp:Label runat="server" ID="Label1" 
                    Text='<%# string.Format("{0:0.### %}", Eval("Total")) %>'>
                </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

private class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Total { get; set; }
}

protected void Page_Load(object sender, EventArgs e)
{
    var items = new List<Item>
        {
            new Item {Id = 1, Name = "One", Total = 1.0M},
            new Item {Id = 2, Name = "Two", Total = 0.2M},
            new Item {Id = 3, Name = "Three", Total = 0.03M},
            new Item {Id = 4, Name = "Four", Total = 0.004M},
            new Item {Id = 5, Name = "Five", Total = 0.0005M},
            new Item {Id = 6, Name = "Six", Total = 0.00006M},
        };

    GridView1.DataSource = items;
    GridView1.DataBind();
}


私人类项目
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共十进制总数{get;set;}
}
受保护的无效页面加载(对象发送方、事件参数e)
{
var items=新列表
{
新项目{Id=1,Name=“一”,总计=1.0M},
新项目{Id=2,Name=“2”,总计=0.2M},
新项目{Id=3,Name=“三”,总计=0.03M},
新项目{Id=4,Name=“Four”,总计=0.004M},
新项目{Id=5,Name=“5”,总计=0.0005M},
新项目{Id=6,Name=“Six”,总计=0.00006M},
};
GridView1.DataSource=项目;
GridView1.DataBind();
}

我希望将其显示为小数点后只有有效零的小数点,如示例所示。对不起,我不应该否决任何回答尝试,尤其是在没有解释的情况下。编辑回复,我会更正,在你的答案更新之前我无法修改。我的错!我想念你的问题。我更新了答案-
{0:0.####%}
。这里有更多的例子-谢谢。我认为String.Format(“{0:0.}”,123.0);是代码隐藏方法的答案,但我确实在寻找在标记中使用Eval的解决方案。如果只想使用Eval,可以使用
。但是,您需要
%
,这是将十进制值(小于1)显示为百分比的目的。