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