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

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

ただいまの
回答率

90.51%

  • C#

    7149questions

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

  • .NET Framework

    459questions

    .NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

【C# .NET】DataGridViewにListのデータが表示されない

解決済

回答 1

投稿

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

miqa3893

score 5

 前提・実現したいこと

研修の一環として、C# .NETを用い、データベースからデータを取得してWindows Formに表示させるアプリケーションを作成しています。
そこで、データベースから取得したデータを独自クラスを実装したListに格納し、それをDataGridViewへバインドさせようと考え、実装を行っています。

 発生している問題・エラーメッセージ

データベースからデータの取得を行うこと自体はできているのですが、そのデータをDataGridViewに表示させることができていません。
(エラーメッセージはありません。)

 該当のソースコード

 SearchForm.CS 

            //これより上の内容は省略しています。

            connection.Open();
            SqlDataReader reader = command.ExecuteReader();

            //データの取得とリストへの反映
            while (reader.Read())
            {
                int id = (int)reader.GetValue(0);
                string name = (string)reader.GetValue(1);
                string zipcode = (string)reader.GetValue(2);
                string address = (string)reader.GetValue(3);
                string tel = (string)reader.GetValue(4);
                short temp = (short)reader.GetValue(5);
                string sex = "";

                switch (temp)
                {
                    case 1:
                        sex = "男性";
                        break;
                    case 2:
                        sex = "女性";
                        break;
                    case 3:
                        sex = "その他";
                        break;
                    default:
                        sex = "未登録";
                        break;
                }

                customers.Add(new Customers(id, name, zipcode, address, tel, sex));
            }

            connection.Close();
            customersBindingSource = new BindingSource
            {
                DataSource = customers
            };
            dataGridView1.DataSource = customersBindingSource;

Customer.cs

    class Customers
    {
        private int Id { get; set; }
        private string Name { get; set; }
        private string Zipcode { get; set; }
        private string Address { get; set; }
        private string Tel { get; set; }
        private string Sex { get; set; }

        public Customers(int Id, string Name, string Zipcode, string Address, string Tel, string Sex)
        {
            this.Id = Id;
            this.Name = Name;
            this.Zipcode = Zipcode;
            this.Address = Address;
            this.Tel = Tel;
            this.Sex = Sex;
        }
    }

 試したこと

上記の実装を行う前に、一度「Fill」を使った方法を試しています。しかしDataGridViewに表示できない現象は同様に発生しており、解決に至っていません。

また、DataGridViewのDataSourceをGUI上から「Customer」に設定して試しましたが、同様の結果でした。

 そのた

OS:Windows 10
DB:SQL Server 2017(LocalDB)
言語:C#
フレームワーク: .NET Framework 4.5.2
IDE:Visual Studio Community 2017

ご回答いただけたら幸いです。よろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

Customersクラスは外部から値を確認するすべがないのではないですか?
privateな実装だとそのクラスの中からしか参照できません。
publicな実装にしてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/06/22 11:30

    ご回答ありがとうございます。
    上記件で解決いたしました。感謝申し上げます。

    キャンセル

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

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

関連した質問

  • 解決済

    C# DataGridViewの新規行追加について

    現在C#、Visual Studio2013 を勉強しています ■実現したいこと 入力した値をDataGridViewに新規行を追加して表示させる プログラムの

  • 解決済

    C#のDataGridView

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

  • 解決済

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

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

  • 解決済

    C# DataGridViewについて

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

  • 解決済

    会員情報システム(Java)での作り方

    javaで会員情報システムのようなものを作りたいです。 下記の実行結果(コマンドプロンプトで実行)になるような、登録プログラムを作成したいのですが、作成方法が分かりませんので、教

  • 解決済

    棒グラフのそれぞれの棒にクリックするとクリックした棒に対応した処理をさせる

    前提・実現したいこと GoogleChartを使用し、棒グラフを表示させることは出来ました。 実現させたいこととしては、棒グラフの棒をクリックしたときに値ごとにアラートを表示す

  • 解決済

    C# DatagridViewの使い方

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

  • 解決済

    DataGridViewのイベント

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

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

  • C#

    7149questions

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

  • .NET Framework

    459questions

    .NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。