如何在GridView Column ItemTemplate中将数值数据格式化为数千?

时间:2013-03-11 17:09:48

标签: asp.net vb.net

我有一个像这样的列的gridview:

<asp:TemplateField HeaderStyle-Width="75px">
     <HeaderTemplate>
         <asp:Label ID="lblHM1" Text="Hm1" runat="server"></asp:Label>
     </HeaderTemplate>
     <ItemTemplate>
         <asp:Label ID="lblM1" Text='<%# Eval("m1","{0:#0}")%>' runat="server">
          </asp:Label>
     </ItemTemplate>
</asp:TemplateField>

此列中的数字通常大于1000,因此我想将它们格式化。例如,如果此列中的数据显示为11359,我希望将其格式化为11,359

我尝试过以下方法:

<asp:TemplateField HeaderStyle-Width="75px">
     <HeaderTemplate>
         <asp:Label ID="lblHM1" Text="Hm1" runat="server"></asp:Label>
     </HeaderTemplate>
     <ItemTemplate>
         <asp:Label ID="lblM1" Text='<%# Eval("m1","{0:N0}")%>' runat="server">
          </asp:Label>
     </ItemTemplate>
</asp:TemplateField>

但上面会产生一个异常:Input string was not in a correct format

我做错了什么?

3 个答案:

答案 0 :(得分:3)

你可以这样做:

 <asp:Label ID="lblM1" Text='<%# Eval("m1","{0:0,0}")%>' runat="server"></asp:Label>

那应该将11239格式化为“11.239”。根据您的文化,小组分隔符会有所不同。

查看文档:

The , custom specifier

Standard Numeric Format Strings

Custom Numeric Format Strings

编辑: 顺便说一句,这可能是一个完全不同的原因。可能是你在一种文化中发送数据,但是.Net正试图用另一种不兼容的数据进行解析。

答案 1 :(得分:0)

我尝试了你的格式,它对我有用,谢谢:)

只需按照以下方式进行更改,然后尝试是否适用于您。

                “&GT;       

而不是Eval使用DataBinder.EVal。

答案 2 :(得分:0)

只需使用它 -

Text='<%# Eval("m1","{0:0,0}") %>'