【问题标题】:How to convert text to money inside a gridview?如何在gridview中将文本转换为金钱?
【发布时间】:2012-02-07 16:27:29
【问题描述】:

我有一个显示数据库信息的网格视图,我希望将结果转换为货币格式。 这是我试图转换的行:

<asp:Label ID="Label2" runat="server" Text='<%# Bind("OrderTotal", "{0:c}") %>'></asp:Label>

这不起作用,并且不会出错。网格视图中仅显示整数。 有没有办法最好在 .aspx 页面中执行此操作?如果不是,我需要做什么才能将每一行转换为 Money 格式?

谢谢大家!

编辑: 整个 Gridview 代码:

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
        AutoGenerateColumns="False" CellPadding="4" DataKeyNames="OrderID" 
        DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" Width="100%" 
                    AllowPaging="True" style="margin-right: 3px" PageSize="50">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                        CommandName="Select" Text="&gt;&gt; "></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Order #" InsertVisible="False" 
                SortExpression="OrderID">
                <EditItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("OrderID") %>'></asp:Label>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:HyperLink ID="HyperLink2" runat="server" Text='<%# Bind("OrderID") %>'></asp:HyperLink>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Date" SortExpression="OrderDate">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("OrderDate") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("OrderDate", "{0:d}") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="OrderAccount" HeaderText="Ordered By" 
                SortExpression="OrderAccount" />
            <asp:BoundField DataField="OrderCostCentre" HeaderText="Cost Centre" 
                SortExpression="OrderCostCentre" />
            <asp:TemplateField HeaderText="Total" SortExpression="OrderTotal">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" 
                        Text='<%# Bind("OrderTotal", "{0:c}") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("OrderTotal").ToString("C") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>

【问题讨论】:

  • 你能显示你的gridview的标记吗?你在使用绑定列吗?
  • 我认为将格式化程序字符串中的“C”大写。 “{0:C}”
  • 简单,应用用于将铅转化为黄金的相同公式......嗯,你还不知道那个公式吗? ;)
  • @Davide 我已经添加了我的整个 gridview 代码
  • @Kolten- 检查OrderTotal 的数据类型是否为数字。我已经测试过当列类型是 varchar 并且它不起作用。

标签: c# asp.net gridview


【解决方案1】:

Eval 应该可以工作...您是否有理由在某些上使用 Eval 并在其他上使用 Bind?

<%#Eval("OrderTotal", "{0:c}")%>

【讨论】:

  • 第一个选项我得到“DataBinding:‘System.Data.DataRowView’不包含名为‘C’的属性。”第二个选项不会编译。如果我能让它工作,这似乎是一个不错的选择!有什么想法吗?
  • @JeffTurner- 你测试过这个 BTW 吗?
  • 是的,抱歉,忘记了 ToString 方法仅在代码隐藏中处理时才有效。我已经编辑了我的答案。
  • @JeffTurner - 我没有理由将 Eval() 用于该单个 OrderID 条目。不知道为什么会这样。我将它切换到 Bind() 没有问题。问题是 - 您的方法不会以任何方式转换它。它仍然显示为一个整数。很好奇为什么这不能正确转换!
【解决方案2】:

检查OrderTotal 是否是非数字类型,如果是这样的话。将其转换为数字,它应该可以工作

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多