2012-02-07 8 views
2

私はデータベースからの情報を表示するグリッドビューを持っており、結果を金額形式に変換したいと考えています。 これは私が変換しようとしていますラインです:gridviewの中でテキストをお金に変換するには?

<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> 
+0

グリッドビューのマークアップを表示できますか?あなたは束縛列を使っていますか? –

+2

あなたのフォーマッタ文字列に 'C'を大文字にしていると思います。 "{0:C}" –

+0

簡単に、リードを金に変換するのに使用された同じフォーミュラを適用してください...あのフォーミュラは既に分かっていませんか? ; – musefan

答えて

1

ので、それが問題である場合OrderTotalが非数値型であるかどうかを確認します。数字に変換するとうまくいくはずです

1

評価は...あなたが他の人にいくつかとバインドに評価を使用している理由があります動作するはず?

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

最初のオプションは「DataBinding:System.Data.DataRowView」ですtを持つプロパティを含んでいない彼は 'C'の名前を指定します。 2番目のオプションはコンパイルされません。 これはうまく動作するようになると良い選択肢のようです。何か案は? – Kolten

+0

@ JeffTurner-このBTWをテストしましたか? – Mubarek

+0

ええ、申し訳ありませんが、ToStringメソッドはコードビハインドで扱うときにのみ機能します。私は私の答えを編集しました。 –

関連する問題