1

我有一个带有如下列的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

我究竟做错了什么?

4

3 回答 3

3

你可以这样做:

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

那应该将 11239 格式化为“11.239”。组分隔符会因您的文化而异。

看看文档:

, 自定义说明符

标准数字格式字符串

自定义数字格式字符串

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

于 2013-03-11T17:25:03.940 回答
0

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

只需按以下方式更改并尝试它是否适合您。

'>

而不是 Eval 使用 DataBinder.EVal。

于 2013-08-12T06:01:57.513 回答
0

只需使用这个-

Text='<%# Eval("m1","{0:0,0}") %>'
于 2014-06-28T09:44:28.140 回答