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

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

新規登録して質問してみよう
ただいま回答率
85.35%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

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

Q&A

解決済

2回答

2178閲覧

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

miiiiiiiisuke

総合スコア13

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

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

0グッド

0クリップ

投稿2020/07/17 01:43

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

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); }

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

こうなのでは?

C#

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

投稿2020/07/17 02:25

KOZ6.0

総合スコア2707

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

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

miiiiiiiisuke

2020/07/18 03:35 編集

ありがとうございます!!!!!!動きましたー!!! 「DataGridViewComboBoxColumn columnNameNum = new DataGridViewComboBoxColumn();」は コントロールを作っているところで、Nameを指定する場所ではないのですね。 勘違いしていました。変数の名前づけから勘違いのニオイがプンプンするので、変更することにしました。 DataGridViewComboBoxColumn colCombo = new DataGridViewComboBoxColumn(); colCombo .Name = "colCombo" + i; に。あースッキリ!
guest

0

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

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

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 02:24

編集2020/07/17 03:12
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

miiiiiiiisuke

2020/07/17 02:45

ご回答ありがとうございます!! データセットを使う方法も色々試して、よく分からず途中で断念しております。 このページを参考に、またチャレンジしてみたいと思います!
退会済みユーザー

退会済みユーザー

2020/07/17 02:58

DB か何から取得したデータを DataGridView のセルに直接入れて表示しているのではないかと想像しています。そうだとするとそれは考え直すべきだと思います。表示だけでも茨の道ですが、もし編集とその結果の DB への反映まで行うとすると、それではゴールにたどり着けないでしょう。 ご参考に、後で回答欄にこうしてはいかがということを書いておきます。
miiiiiiiisuke

2020/07/17 03:09 編集

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

2020/07/17 05:28

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

2020/07/19 21:33 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問