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

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

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

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

Q&A

解決済

3回答

3037閲覧

DataGridViewに表示されている列の値を読み込む

xlostdjx

総合スコア39

C#

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

0グッド

0クリップ

投稿2018/06/19 05:30

編集2018/06/19 05:44

Visual Studio2015 の Windows Forms アプリ

DataGridViewに表示されている列の値を読み込んでその値に別の値を設定してそれに変換させるためにはどうすればいいでしょうか??
(1, 2 の値はDBからもらっています。)

例 Aという列がありそのA列に10行あるとして、
その1行目の値が 1、 2行目の値が 2、 ......10行目の値が 2
(1.2.1.2と 1行事に 交互に振られていく)
だとしてその 1,2 の値に文字列を指定して
例 1に入 2に出 指定して表示させたいです

例 結果としては 1行目の値が 入、 2行目の値が 出、 ......10行目の値が 出
と結果させたいです>

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

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

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

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

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

guest

回答3

0

DataGridView.CellFormatting イベントのハンドラで書き換えては?

投稿2018/06/19 05:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

取得するSQLの時点でそのカラムを内製する方法もあります。
具体的な内容は、SQLに関する情報(DBMSの種類とバージョン、SQL、SQL上のどの項目を変換するか)が提示されれば可能です。

追記

in_out_type_nameという項目をSQL内で内製します。(in_out_typeは数値型を想定)
以下の行をselect 以降に追加して下さい。(fromの直前の場合は','に注意)

C#

1SQL.AppendLine(" case TS.in_out_type when 1 then '入' when 2 then '出' end as in_out_type_name,");

投稿2018/06/19 05:58

編集2018/06/19 06:46
sazi

総合スコア25138

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

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

xlostdjx

2018/06/19 06:32

DBMSの種類とバージョン = OracleDB SQL、 SQL.AppendLine("SELECT"); SQL.AppendLine(" TS.tana_cd,"); SQL.AppendLine(" MT.tana_nm,"); SQL.AppendLine(" TS.item_cd,"); SQL.AppendLine(" MI.item_nm,"); SQL.AppendLine(" TS.in_out_date,"); SQL.AppendLine(" TS.in_out_type,"); SQL.AppendLine(" TS.in_out_quantity,"); SQL.AppendLine(" TS.QUANTITY,"); SQL.AppendLine(" MI.unit_name,"); SQL.AppendLine(" TS.memo"); SQL.AppendLine("FROM t_stock TS"); SQL上のどの項目を変換するか in_out_typeを変換したいです。
guest

0

ベストアンサー

質問内容をうまく理解しているかイマイチ分かりませんが、
・対象列の値が1の場合、"入"の文字を表示
・対象列の値が2の場合、"出"の文字を表示
ということであれば、
DataGridViewのCellFormattingイベントハンドラで
対象列のセルがCellFormattingされるときに、
e.Valueが1なら"入"を
e.Valueが2なら"出"を
e.Valueにセットし直せばよさそうです。

以下のサイトが参考になります。

■DataGridViewのセルの値によって表示するテキストを変更する
https://dobon.net/vb/dotnet/datagridview/cellformattingvalue.html

投稿2018/06/19 05:45

kenshirou

総合スコア772

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

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

xlostdjx

2018/06/19 06:30

対象列の行の値が1の場合と2の場合のときに文字を指定したいです。
kenshirou

2018/06/19 06:43 編集

対象列の行の値が1でも2でもない場合は、そのまま表示したいのであれば何もしなければよいですし、何も表示したくなければ空文字をe.Valueにセットすればよいでしょう。
xlostdjx

2018/06/19 07:42

すみません。力不足でこういう結果になり上手くいきませんでした。 //Value 対象セルの値 //イベントのColumnIndexとDataGridViewのColumns[].Nameで列を判断 DataGridView dgv = (DataGridView)sender; //セルの列を確認 //e.Valueが1なら"入"を if (dgv.Columns[e.ColumnIndex].Name == "in_out_quantity" && e.Value is string) ; { if (e.Value == "1") { e.Value = "入"; } }
kenshirou

2018/06/19 07:59

どのように上手くいかなかったのでしょうか? 詳しく検証していなくて申し訳ないのですが、e.Valueへの代入後、e.FormattingApplied = true;は行いましたか?
xlostdjx

2018/06/19 08:09 編集

e.FormattingApplied = true;も行いました。。 下記のコードでいくと、全ての列と行に”入”が入ります。 //Value 対象セルの値 //イベントのColumnIndexとDataGridViewのColumns[].Nameで列を判断 DataGridView dgv = (DataGridView)sender; //セルの列を確認 //IN_OUT_TYPEの列の値が1なら"入"に変換する if (dgv.Columns[5].Name == "IN_OUT_TYPE") ; { // if(dgv.Columns[5].Value) e.Value = "入"; e.FormattingApplied = true; }
kenshirou

2018/06/19 08:23 編集

カラム名は分かりませんが、 > if (dgv.Columns[5].Name == "IN_OUT_TYPE") ; の条件は、対象のDataGridViewの5番目のカラム名が"IN_OUT_TYPE"の場合、ということになりますよ。 DataGridViewのカラム構成がそのようになっているのであれば、常にこの条件はtrueになってしまい、全ての列と行に”入”が入ってしまうのは当然たど思います。 if (dgv.Columns[e.ColumnIndex].Name == "IN_OUT_TYPE") ; ではないですか? ※この意味は、CellFormattingをしようとしているセルのカラム名が"IN_OUT_TYPE"だったら、、、という意味になり、それ以外のカラムのセルに対してはこの条件はfalseになります。 あとは、e.Valueの値に応じて、e.Valueを書き換えてあげればOKです。
xlostdjx

2018/06/19 08:30

ご指摘ありがとうございます。 下記の文を書きたいのですが、Valueを上手く使えず困っています。 あとは、e.Valueの値に応じて、e.Valueを書き換えてあげればOKです。
kenshirou

2018/06/20 01:26 編集

「Valueを上手く使えず」とありますが、「上手く使えない」とは具体的にどのようなことでしょうか? ・コードを書いてみたけれど文法エラーが出る(その場合、どのようなエラー内容か?) ・文法エラーは出ないけれど実行時に例外が発生する(その場合、どのような例外か?) ・実行は可能だが期待した結果でない(その場合、どのような結果を期待して、どのような結果となったのか?) 具体的な内容と、実際のコードを提示頂けますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問