質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

3717閲覧

asp:GridViewのBoundFieldのDataFormatStringを使用したマイナスの数値の表示

culych

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/11/18 09:40

バージョン等

ASP.net
C#
VisualStudio2019
Windows11
.NET 4.8

前提

DataTableにデータを設定→DataTableをGridViewにバインドという流れでデータを表示します。
DataTableに設定される値プラスまたはマイナスの数値です。マイナスの場合は-1234といった形でDataTableに設定される想定です。

実現したい動き

asp:GridViewのBoundFieldのDataFormatStringを使用して、以下のような表示がしたいです。
¥-1,234
または¥マークを除去した以下の表示
-1,234

現状

以下のような表示になってしまいます。
-¥1,234

ソースコード

HTML

1<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TEST.WebForm1" %> 2 3<!DOCTYPE html> 4 5<html xmlns="http://www.w3.org/1999/xhtml"> 6<head runat="server"> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 <title></title> 9</head> 10<body> 11 <form id="form1" runat="server"> 12 <asp:GridView ID="Grd" runat="server" AutoGenerateColumns="False" > 13 <Columns> 14 <asp:BoundField DataField="ID" /> 15 <asp:BoundField DataField="KINGAKU1" DataFormatString="{0:C}" HtmlEncode="false" /> 16 </Columns> 17 </asp:GridView> 18 </form> 19</body> 20</html>

C#

1using System; 2using System.Collections.Generic; 3using System.Data; 4using System.Linq; 5using System.Web; 6using System.Web.UI; 7using System.Web.UI.WebControls; 8 9namespace TEST 10{ 11 public partial class WebForm1 : System.Web.UI.Page 12 { 13 protected void Page_Load(object sender, EventArgs e) 14 { 15 Grd.Columns[0].HeaderText = "ID"; 16 Grd.Columns[1].HeaderText = "KINGAKU1"; 17 18 DataRow dr; 19 20 DataTable dt = new DataTable("TEST"); 21 dt.Columns.Add("ID", typeof(int)); 22 dt.Columns.Add("KINGAKU1", typeof(double)); 23 24 // 金額計算 25 var a = 1000 + (-5500) + (-1000); 26 27 dr = dt.NewRow(); 28 dr["ID"] = 1; 29 dr["KINGAKU1"] = a; 30 31 dt.Rows.Add(dr); 32 33 Grd.DataSource = dt; 34 Grd.DataBind(); 35 } 36 } 37}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

DataFormatString="{0:C}"

C に代えて N にしてみたらどうなりますか?

標準の数値書式指定文字列
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/standard-numeric-format-strings

投稿2021/11/18 10:47

編集2021/11/18 10:48
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

culych

2021/11/18 11:06

ご回答ありがとうございます。 Cに代えてNで実行したところ以下の結果になりました。 -5,500.00 ただ、Nを指定してプラスの数値がデータに設定された場合、¥マークの表記が消えてしまいます。 プラスの場合は¥マークと3桁のカンマ区切り マイナスの場合は¥マークを除去-の表記と3桁のカンマ区切り といった表示をDataFormatStringのみで制御は可能でしょうか? 追加質問の形になってしまい申し訳ございませんが、何か方法がございましたらご教示いただきたいです。 無ければ、先ほどのSuferOnWww様のご回答をベストアンサーとさせていただき本件クローズとさせていただきます。
退会済みユーザー

退会済みユーザー

2021/11/18 11:22

> または¥マークを除去した以下の表示 > -1,234 ということだったはずですが?  どうしても ¥-1,234 としたいということなら、そのように文字列を組み立てて、TemplateField を使って表示するとかしてはいかがですか?
culych

2021/11/18 12:35

ご回答ありがとうございます。 TemplateFieldを使用して表示する方法も検討してみます。
退会済みユーザー

退会済みユーザー

2021/11/19 01:56

> TemplateFieldを使用して表示する方法も検討してみます。 double 型のデータのようですから、double 型を引数にとって、それから望む形の文字列を組み立てて string 型で返すメソッドを定義し、それを TemplateField のデータバインド式に組み込むようにすればできるはずです。以下の記事を参考に考えてみてください。 データバインド式 http://surferonwww.info/BlogEngine/post/2010/08/17/Data-bind-method.aspx
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問