Il mio obiettivo è:
caricare un DataGridView da un DataSet e impostare le celle di una colonna come ComboBox con i valori delle celle della colonna corrispondente del DataSet.
Nella mia ignoranza
, con il codice sotto(una form con un DataGridView), sono riuscito a raggiungere il mio obiettivo ma ho dovuto aggiungere una copia(ds_copia) del DataSet originale(ds) per ottenere i dati della colonna. Altrimenti, usando il DataSet originale, la "cella ComboBox" contiene tutti i dati della colonna ma non riesco a modificare il valore in base alla sua selezione.
Intuisco che la copia del DataSet iniziale non sia una buona idea....consigli?
codice:
Public Class Form1
Dim ds As New DataSet
Dim ds_copia As New DataSet
Private Sub Form1_Load() Handles MyBase.Load
ds.DataSetName = "prova"
ds.Tables.Add("colonne")
ds.Tables("colonne").Columns.Add("nome")
ds.Tables("colonne").Columns.Add("testo")
Dim riga(1) As String
For a = 1 To 3
riga(0) = "nome" & a
riga(1) = "testo" & a
ds.Tables("colonne").Rows.Add(riga)
Next
ds_copia = ds.Copy
Dim colonna_nome As New DataGridViewComboBoxColumn
colonna_nome.DataSource = ds_copia.Tables("colonne")
colonna_nome.DisplayMember = "nome"
colonna_nome.HeaderText = "nome"
Dim colonna_testo As New DataGridViewTextBoxColumn
colonna_testo.HeaderText = "testo"
DataGridView1.Columns.Add(colonna_nome)
DataGridView1.Columns.Add(colonna_testo)
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = ds.Tables("colonne")
DataGridView1.Columns(0).DataPropertyName = "nome"
DataGridView1.Columns(1).DataPropertyName = "testo"
End Sub
End Class