C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

DataGridVewのComboBoxColumn化につい /jin (24/05/30(Thu) 17:52) #103151
Re[1]: DataGridVewのComboBoxColumn化につい /WebSurfer (24/05/30(Thu) 18:39) #103152
│└ Re[2]: DataGridVewのComboBoxColumn化につい /jin (24/05/31(Fri) 16:40) #103160
Re[1]: DataGridVewのComboBoxColumn化につい /KOZ (24/05/30(Thu) 20:28) #103153
  └ Re[2]: DataGridVewのComboBoxColumn化につい /jin (24/05/31(Fri) 16:41) #103161 解決済み


親記事 / ▼[ 103152 ] ▼[ 103153 ]
■103151 / 親階層)  DataGridVewのComboBoxColumn化につい
□投稿者/ jin (1回)-(2024/05/30(Thu) 17:52:57)

分類:[VB.NET/VB2005 以降] 

どなたかお力を貸してください…

当方初心者です。
現在SqlSeverから取得したデータをDataGridViewに表示し、入力・編集・更新を行えるようにしています。

一部の列でデータ入力のルールが必要となり、プルダウンで入力できるようにしたいとの要望があります。

この際、プルダウンの情報はマスターテーブルから取得したデータを選択肢として設定します。


本題ですが、
SqlSeverで取得し表示したDataGridViewの一部の列だけDataGridViewComboBoxColumnに切り替える良い方法は無いでしょうか?

どなたかご存じでしたら教えてください。
よろしくお願い致します。
[ □ Tree ] 返信 編集キー/

▲[ 103151 ] / ▼[ 103160 ]
■103152 / 1階層)  Re[1]: DataGridVewのComboBoxColumn化につい
□投稿者/ WebSurfer (2902回)-(2024/05/30(Thu) 18:39:22)
No103151 (jin さん) に返信

> SqlSeverで取得し表示したDataGridViewの一部の列だけDataGridViewComboBoxColumnに切り替える良い方法は無いでしょうか?

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

DataGridView に ComboBox を表示
http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx
[ 親 103151 / □ Tree ] 返信 編集キー/

▲[ 103152 ] / 返信無し
■103160 / 2階層)  Re[2]: DataGridVewのComboBoxColumn化につい
□投稿者/ jin (2回)-(2024/05/31(Fri) 16:40:09)
No103152 (WebSurfer さん) に返信

情報ありがとうございます。

今回取得しているSQLは都度異なる検索条件を使って取得・表示を切り替えているため
この方法では対応できない気がしました。

提示した情報が少なく申し訳ありません。
[ 親 103151 / □ Tree ] 返信 編集キー/

▲[ 103151 ] / ▼[ 103161 ]
■103153 / 1階層)  Re[1]: DataGridVewのComboBoxColumn化につい
□投稿者/ KOZ (449回)-(2024/05/30(Thu) 20:28:19)
2024/05/30(Thu) 20:37:13 編集(投稿者)
No103151 (jin さん) に返信
> SqlSeverで取得し表示したDataGridViewの一部の列だけDataGridViewComboBoxColumnに切り替える良い方法は無いでしょうか?

AutoGenerateColumns = True の状態でということなら、DataSource をインポートした後、列を交換すればよいです。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    DataGridView1.AutoGenerateColumns = True
    Dim dt As New DataTable
    dt.Columns.Add("TEST")
    dt.Rows.Add("A")
    dt.Rows.Add("B")
    dt.Rows.Add("C")
    DataGridView1.DataSource = dt
    Dim oldColumn = DataGridView1.Columns("TEST")
    Dim newColumn As New DataGridViewComboBoxColumn With {
        .DataPropertyName = oldColumn.DataPropertyName,
        .Name = oldColumn.Name,
        .HeaderText = oldColumn.HeaderText,
        .ValueType = oldColumn.ValueType,
        .ReadOnly = oldColumn.ReadOnly
    }
    Dim dtCombo As New DataTable
    dtCombo.Columns.Add("Display")
    dtCombo.Columns.Add("Value")
    dtCombo.Rows.Add("AAA", "A")
    dtCombo.Rows.Add("BBB", "B")
    dtCombo.Rows.Add("CCC", "C")
    newColumn.DisplayMember = "Display"
    newColumn.ValueMember = "Value"
    newColumn.DataSource = dtCombo
    DataGridView1.Columns.RemoveAt(oldColumn.Index)
    DataGridView1.Columns.Insert(oldColumn.Index, newColumn)
End Sub

[ 親 103151 / □ Tree ] 返信 編集キー/

▲[ 103153 ] / 返信無し
■103161 / 2階層)  Re[2]: DataGridVewのComboBoxColumn化につい
□投稿者/ jin (3回)-(2024/05/31(Fri) 16:41:29)
No103153 (KOZ さん) に返信
> 2024/05/30(Thu) 20:37:13 編集(投稿者)

情報ありがとうございます!この方法で解決することができました!!

差し替えるところで詰まっていたのですが提供頂いた情報で突破することができました。

2,3日詰まっていたことだったので本当に助かりました!
解決済み
[ 親 103151 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -