Sgrubak ha scritto:
Mostra il codice che hai scritto per popolare la DataGridViewComboBoxColumn, e cerchiamo di capire perché i valori non si aggiornano.
Ciao ,come dicevo io cercavo di compilare la combo (aspettandomi un qualche .Items) dopo averla inserita in DataTable( e qui colpa di C # che mi fa gli scherzi lasciandomela inserire .. ed in effetti poi mi appariva come colonna nella DataGridView dataGridView1 associata alla DataTable dtRegistro).
Premetto che, sulla dataGridView1 non ho inserito (ne da da codice ne da finestra Progettazione) nessuna colonna, si creano in automatico dopo che associo la datagridview1 alla dtRegistro.
Quindi ora ho fatto un passo indietro inserendola (la combobox e solo quella colonna lì) direttamente da codice sulla DatagridView1, il codice che ho usato è questo :
DataGridViewComboBoxColumn dgvCmb = new DataGridViewComboBoxColumn();
dgvCmb.HeaderText = "Combo";
dgvCmb.Items.Add("1");
dgvCmb.Items.Add("2");
dgvCmb.Items.Add("3");
dgvCmb.Items.Add("4");
dgvCmb.Name = "cmbCombo";
dataGridView1.Columns.Add(dgvCmb);
E confermo che mi appare (durante l'esecuzione dell'applicazione), con le relative possibilità di scelta ( 1 ,2, 3, 4), selezionabile etc etc .(poi ci sarebbe il problema di farla apparire nel punto giusto e non in fondo ma un passo alla volta).
Quando però vado a salvare (o meglio dire esportare) il tutto attraverso il codice :
dtRegistro.WriteXml(@"C:\CartellaProva\RegistroEntrateUscite.xml");
e poi reimportare :
dtRegistro.ReadXml(@"C:\CartellaProva\RegistroEntrateUscite.xml");
non mi reimporta i valori che io avevo selezionato nelle varie celle della colonna dove ho la ComboBox, come appunto se la DtRegistro non si aggiorna con le modifiche fatte (durante l'esecuzione dell'applicazione) sulla colonna del Combobox ( se modifco altre cose sulle altre colonne invece tutto ok).
Questo perché (presumo) non ho nessun riferimento di tipo ComboBox nella DataTable (non avendolo potuto inserire a codice).
" L'associazione " DataTable / DataGridView la faccio tramite queste due righe :
bsFiltro.DataSource = dtRegistro; //bindingsource
dataGridView1.DataSource = bsFiltro;
Dovrei allora trovare un metodo simile al :
dtRegistro.WriteXml(@"C:\CartellaProva\RegistroEntrateUscite.xml");
ma che funzioni sulla DataGridView e non sul DataTable.
Vi confermo anche se io utilizzo per esempio i filtri che ho creato, e poi esporto/reimporto, funziona perfettamente, a conferma che le modifiche fatte sulla dataGridView1 su ripercuotono positivamente sulla dtRegistro ,tranne appunto quelle sulla Combobox.
Esempio di due filtri che ho inserito che lavorano sulla colonna "Data" (magari sono utili a qualcuno ):
private void dateTimePickerDal_ValueChanged(object sender, EventArgs e) //questo mi mostro solo le cose registrate dalla data scelta in avanti
{
bsFiltro.Filter = "Data >= '" + dateTimePickerDal.Value.Date + "'";
}
private void dateTimePickerIl_ValueChanged(object sender, EventArgs e) //questo mi mostro solo le cose registrate nella data scelta
{
bsFiltro.Filter = "Data = '" + dateTimePickerIl.Value.Date + "'";
}
EDIT messaggio.
Per poter decidere in che punto fa apparire la mia colonna Combo, uso questo codice :
dgvCmb.DisplayIndex = 7 // viene inserita dopo 7 colonne ;