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

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

新規登録して質問してみよう
ただいま回答率
85.49%
.NET Framework

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

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

1回答

877閲覧

DataGridViewのセルに対して作成したコンボボックス値にValue値をもたせたい

退会済みユーザー

退会済みユーザー

総合スコア0

.NET Framework

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

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/06/07 10:16

datagridviewのセルにコンボボックスを付加しています。
全体の仕様として行を増減させているのでDataGridViewComboBoxCellで作成しました。
以下の参考1を元に作成したのですが、これではvaluememberを設定することができません。

ちなみに当初参考2のようにDataGridViewComboBoxColumnを用いて作成しましたが、これでは行の増減で各々のセルで選択した値が初期に戻ってしまってあきらめました。

どうすれはDataGridViewのセルに対して作成したコンボボックス値にValue値をもたせることができるでしょうか。

参考1は以下のリンク
DataGridView コンボボックスの使い方

参考2は以下のリンク
DataGridViewの列にコンボボックスを表示する

VisualStudio2017 .netframework4.7.1で作成

VisualStudio2017:VB.NET

1 Private Sub test(ByRef dgv As DataGridView, 2 ByRef cbc As DataGridViewComboBoxCell, 3 ByVal colName As DataGridViewComboBoxColumn) 4 5 Dim dgvRow As New DataGridViewRow 6 Dim listCnt As Integer = 0 7 listCnt = setDgvList.Count 8 9 colName.Items.Clear() 10 11 For row As Integer = 0 To listCnt - 1 12 Dim disp As String = setDgvList(row).listName 13 cbc.Items.Add(disp) 14 Next 15 16 colName.Items.AddRange(cbc.Items) 17 18 dgvRow.Cells.Add(cbc) 19 20 dgv.Rows.Add(dgvRow) 21 22 End Sub

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

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

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

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

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

kenshirou

2018/06/16 09:09

このtestというメソッドはどのようなときに呼び出されるのでしょうか?あと、各行でコンボボックス列に表示する内容は異なるのですか?あと、このメソッドの引数がByRefである必要はないと思います。
guest

回答1

0

提示されているコードは行を追加しようとしているのだと思いますが
なぜ、DataGridViewComboBoxColumnのItemを初期化しているのでしょうか?
この状態ですと、今まで選択されていたCellのアイテムも全部初期化されます。
行の追加は単純に

VB.NET

1 Private Sub test(ByRef dgv As DataGridView) 2 3 dgv.Rows.Add() 4 5 End Sub

でいいのでは?

Valueに関しては、2の方法でよいと思いますよ。

投稿2018/06/07 11:28

編集2018/06/07 11:30
YAmaGNZ

総合スコア10242

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

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

退会済みユーザー

退会済みユーザー

2018/06/07 11:56

ご回答ありがとうございます。 > なぜ、DataGridViewComboBoxColumnのItemを初期化しているのでしょうか? データグリッドビューセルにコンボボックスを持たせ、そこにvalueを持たせたいのと関係しています。 データグリッドビューコンボボックスセルで選択した値は、データベースへ登録する処理があります。 その後、データベースからデータを呼び出す処理もあります。 データベースからデータを呼び出したとき、複数行のデータがある場合 colName.Items.Clear() を実施しないと、DataGridViewComboBoxCellにその複数行分データが重複してしまうからです。 データベースからデータ呼び出し時に、value値がないため、登録したデータを選択して表示することができません。
YAmaGNZ

2018/06/07 12:35

いまいち理解できていません。 レコードによって、そのコンボボックスの選択肢が変わるということですか? それとも、行が増えると、コンボボックスの選択肢が変わるということですか? 何か具体的な例があれば、イメージしやすいかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問