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

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

ただいまの
回答率

90.52%

  • C#

    7080questions

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

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

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 214

xlostdjx

score 25

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行目の値が 出
と結果させたいです>

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

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 15:30

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

    キャンセル

  • 2018/06/19 15:41 編集

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

    キャンセル

  • 2018/06/19 16: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 = "入";
    }
    }

    キャンセル

  • 2018/06/19 16:59

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

    キャンセル

  • 2018/06/19 17: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;
    }

    キャンセル

  • 2018/06/19 17:21 編集

    カラム名は分かりませんが、

    > 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です。

    キャンセル

  • 2018/06/19 17:30

    ご指摘ありがとうございます。
    下記の文を書きたいのですが、Valueを上手く使えず困っています。

    あとは、e.Valueの値に応じて、e.Valueを書き換えてあげればOKです。

    キャンセル

  • 2018/06/20 10:26 編集

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

追記

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/19 15: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を変換したいです。

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    DatagridviewのRowindexについて

    Private Sub DataGridView1_CellContentDoubleClick(sender As Object, e As DataGridViewCellEv

  • 解決済

    C# DataGridViewのCheckBoxについて

    前提・実現したいこと Visual Studio2013 にて開発の勉強をしています。 DataGridViewにてCheckBoxのOnOFFの設定をしたいのですがど

  • 解決済

    C#のDataGridView

    C#のDataGridViewはRow, Column, Cellのような構造をもっていますが、複雑でわかりにくいです。 3行目、4列目のセルの種類(buttonとかstri

  • 解決済

    dataGridViewのテキスト出力について

    dataGridViewにテキストを紐づけて、 dataGridViewが更新なり追加なりされると、 紐づけたテキストも更新されるような仕組みは無理でしょうか。 やりたい

  • 解決済

    C# DataGridViewについて

    前提・実現したいこと C#で「ボタンをクリックすると、XMLの内容をDataGridView」に表示するプログラムを作りました。 しかし、ボタンを何回もクリックすると、XM

  • 解決済

    C# DatagridViewの使い方

    C# DataGridViewについて 1列目の1行目にA、2行目にB、3行目にCと表示したくて下記のようにコーディングしました。 namespace WindowsF

  • 解決済

    DataGridViewのイベント

    Form1の画面にDataGridViewを貼りつけ、DataGridViewのカラムを3つ追加します。 カラム1のColumn TypeはDataGridView TextB

  • 解決済

    DataGridViewのComboBoxについて

    DataGridViewのColumn1がComboBoxのカラムだとします。 DataTable dt = new DataTable(); dt.C

同じタグがついた質問を見る

  • C#

    7080questions

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