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

, 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.
Rispondi quotando