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

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

ただいまの
回答率

88.91%

DataGridViewの列のNameをForで回して連番にし、自動作成したい

解決済

回答 2

投稿

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

miiiiiiiisuke

score 11

首記の件で、大変悩んでおります。

DataGridViewを、FormのLoad時に自動で作成しようとしています。

その際、列をコンボボックスにしたいのですが、
下記コードの「?????」で囲んだ部分でエラーが出て、解決できずにおります。

「var columnNameNum = "columnName" + i;」
の指定方法が間違っているのは分かっているのですが、
どのように書けば良いのかいくら調べても分かりません。

            for (int i = 1; i <= 100; ++i)
            {
                var columnNameNum = "columnName" + i;

                DataGridViewComboBoxColumn ????? columnNameNum ??????= new DataGridViewComboBoxColumn();
                //ComboBoxのリストに表示する項目を設定する
                columnNameNum.Items.Add(selectChild1);
                columnNameNum.Items.Add(selectChild2);
                columnNameNum.Items.Add(selectChild3);
                columnNameNum.Items.Add(selectChild4);
                columnNameNum.Items.Add(selectChild5);
                columnNameNum.Items.Add(selectChild6);
                columnNameNum.Items.Add(selectChild7);
                dgv.Columns.Add(columnNameNum);
            }


どうかご教授いただけませんでしょうか。
よろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+1

こうなのでは?

DataGridViewComboBoxColumn columnNameNum = new DataGridViewComboBoxColumn();
columnNameNum.Name = "columnName" + i;

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/07/17 11:40 編集

    ありがとうございます!!!!!!動きましたー!!!

    「DataGridViewComboBoxColumn columnNameNum = new DataGridViewComboBoxColumn();」は
    コントロールを作っているところで、Nameを指定する場所ではないのですね。
    勘違いしていました。変数の名前づけから勘違いのニオイがプンプンするので、変更することにしました。

    DataGridViewComboBoxColumn colCombo = new DataGridViewComboBoxColumn();
    colCombo .Name = "colCombo" + i;

    に。あースッキリ!

    キャンセル

+1

列をコンボボックスにしたいのですが、

以下の記事は参考になりませんか?

DataGridView に ComboBox を表示
http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx

質問者さんのアプリに適用できるかどうかわかりませんが・・・

【追記】

してのコメント欄の  の私のコメントで「ご参考に、後で回答欄にこうしてはいかがということを書いておきます」と書きましたが、それを以下に追記します。

DataGridView などを UI として非接続型のデータ更新を行う場合は、

DataGridview ⇔ BindingSource / BindingNavigator ⇔ DataSet / DataTable ⇔ DataAdapter ⇔ SQL Server

・・・と言う構造にするのが普通です。すなわち、以下の記事の図の構成です。

Windows フォーム アプリケーションでのデータへの接続
https://docs.microsoft.com/ja-jp/previous-versions/wxt2cwcc(v=vs.120)

何故かと言うと・・・

以下の記事の「非接続型のデータ更新」のセクションの図1と図2を見てください。文章は読まなくてもいいので図だけ見てください。

DB 設計者のための明解 ADO.NET 第 1 回
https://docs.microsoft.com/ja-jp/previous-versions/cc482903(v=msdn.10)

図2の DataSet 右側に BindingSource / BindingNavigator 経由で DataGridView が接続されていると思ってください。

ユーザーが DataGridView を操作(行の削除・追加・訂正)した結果は図1にあるように DataSet / DataTable に反映されます。

ユーザーの編集操作が終わったら Update メソッドで図1の編集結果が一度に DB に反映されます。

そういう風にできているのです。

図2の DataSet, DataAdapter なしで DB の更新が必要なアプリを作ってもうまくできるはずがありません。

一度 Visual Studio のウィザードを使って定番の構成のアプリを作ってみてはいかがでしょう?

DB が SQL Server の場合ですが、以下のチュートリアル、

チュートリアル : データベースへのデータの保存 (単一テーブル)
https://docs.microsoft.com/ja-jp/previous-versions/0f92s97z(v=vs.120)

10 行でズバリ !! 非接続型のデータ アクセス
https://github.com/microsoftarchive/msdn-code-gallery-community-0-9-non-alphabetic/tree/master/10%20%E8%A1%8C%E3%81%A7%E3%82%BA%E3%83%90%E3%83%AA%20!!%20%E9%9D%9E%E6%8E%A5%E7%B6%9A%E5%9E%8B%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%20%28ADO.NET%29%20%28VB%29

・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet + TableAdapter を作って、それを利用してアプリを作ると、上に書いた「DataGridview ⇔ BindingSource / BindingNavigator ⇔ DataSet / DataTable ⇔ DataAdapter ⇔ SQL Server」という構造のアプリが、ほとんど自分でコードを書くこと無しに作れます。

上に紹介した後者のチュートリアルは 2 つのテーブルを階層更新するために少々複雑になっていますが、単一テーブルですと前者のチュートリアルのように非常に簡単で、操作に慣れると以下のようなアプリが 5 分もかからず作れるはずです。

イメージ説明

もし上記のことをご存じないとすると、一度試してみると「目から鱗」になると思います。お試しください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/07/17 12:08 編集

    データを残す方法について、本当にものすごく悩んでおります。
    方法がありすぎてまず迷い、当方分け合ってどうしてもVisual Studio2010を使わないといけないので、最新の投稿も参考にできず、過去文献を漁ってあちこちの設定ファイルを直接変更する方法で試してもエラーばかり、本当に本当に途方に暮れました。。。

    ベテランの方の参考をいただけるなんて、本当にありがたいです!!!
    勉強させていただきます。よろしくお願いいたします。

    キャンセル

  • 2020/07/17 14:28

    参考文献ありがとうございます!この土日でしっかり読み込んで勉強させていただきます。
    感謝してもしきれないです。ご教授、誠にありがとうございます。
    このツールを作れば他部署の業務時間が10分の1になる予定なので、しゃかりき頑張ります!!

    キャンセル

  • 2020/07/18 14:22 編集

    ウィザードから試してみました!この通り進んでくれたら、ものすごく便利な機能だと思うのですが、エラーが多発し、先に進めませんでした。。。SQLDBへのアクセス権限がない?のような英語のエラーが出て、何度か色々試しましたが、エラーが出続けて今回は断念しました。
    VisualStusio2010だからでしょうか。最新版のソフト使わせてもらえる立場になったら、すぐに試すようにいたします。自宅PCはネットを見るくらいしか出来ない代物なので、これも将来的に買い替えて、家でも最新バージョンでガンガン勉強できるようにいたします。
    とりいそぎは、本来なら親切ウィザードで困ることなくDBを扱える、ということを覚えておき、きたるべきその日に活用させていただきます。本当に本当にありがとうございました!

    キャンセル

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

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

関連した質問

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