Aggiornamento DataGridViewComboBoxColumn!!!

lunedì 19 gennaio 2015 - 09.30

pelling10 Profilo | Junior Member

Salve a tutti;
sto sviluppando un applicazione in c#:
in un DataGridView, con un apposita funzione creo e popolo una colonna di tipo DataGridViewComboBoxColumn :

public void CARICA_COMBOBOX_DGW(DataGridView nome_dgw, string sql, string nometab, string campo_dispay, string campo_cod, int Width_campo, string intest)
{
SqlConnection conn = new SqlConnection(Properties.Settings.Default.CONNESSIONE_LOCALE);
SqlCommand cmd = new SqlCommand(sql, conn);

try
{
conn.Open();

SqlDataAdapter sqlda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sqlda.Fill(ds, "" + nometab + "");

DataGridViewComboBoxColumn columnCb = new DataGridViewComboBoxColumn();
columnCb.DataPropertyName = "" + nometab + "";

columnCb.DataSource = ds.Tables["" + nometab + ""]; ;
columnCb.DisplayMember = "" + campo_dispay + "";
columnCb.ValueMember = "" + campo_cod + "";

columnCb.Width = Width_campo;
columnCb.HeaderText = "" + intest + "";

nome_dgw.Columns.Add(columnCb);

conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(this, "ERRORE!\n" + ex.Message, "CARICA_COMBOBOX_DGW", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

Fin qui tutto ok!
Poi ho in bottone che richiama un form di inserimento - manutenzione dei dati contenuti nel DataGridViewComboBoxColumn;

Alla chiusura del form come faccio ad aggiornare i dati all'interno del DataGridViewComboBoxColumn ???
Ho provato alla chiusuta del form a richiamare la stessa funzione di cui sopra, ma, invece di aggiornare il DataGridViewComboBoxColumn esistente, giustamente ne crea uno nuovo.......
Qualcuno riesce ad aiutarmi?
Grazie!!!

AntCiar Profilo | Expert


>DataGridViewComboBoxColumn columnCb = new DataGridViewComboBoxColumn();
....
....
....

> nome_dgw.Columns.Add(columnCb);


ciao. E' normale che ti aggiunge una nuova colonna perchè nel codice che richiami e' espressamente indicata la creazione e l'aggiunta della colonna.

nel tuo codice associ come sorgente della combobox l'oggetto 'ds.Tables["" + nometab + ""]'

> columnCb.DataSource = ds.Tables["" + nometab + ""]; ;
> columnCb.DisplayMember = "" + campo_dispay + "";
> columnCb.ValueMember = "" + campo_cod + "";

se questo oggetto è una tabella di un dataset, allora basta che ti fai una sub in cui non fai altro che ricaricare il contenuto della tabella in questione.
Il tutto dovrebbe aggiornarti il contenuto della combo.


Cristian Barca

pelling10 Profilo | Junior Member

Ciao, grazie per la risposta!
In realtà alla mia funzione ho aggiunto un parametro per cui quando chiamo la funzione in modalità aggiornamento non effettuo 'nome_dgw.Columns.Add(columnCb)'
Quindi in teoria dovrebbe solo rileggermi la tabella ed aggiornami i dati....... in realtà non è così.... dove sbaglio?

AntCiar Profilo | Expert

Ciao.

Non funziona perchè nonostate non aggiungi la colonna alla griglia, ti dichiari sempre un nuovo dataset ad ongi invocazione e lo associ ad una nuova colonna che non aggiungera mai.

puoi risplvere in questo modo. ti posto un po di codice:


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


poi quando devi fare l'aggiornamento basta che fai solo questo:


SqlConnection conn = new SqlConnection(Properties.Settings.Default.CONNESSIONE_LOCALE); SqlCommand cmd = new SqlCommand(sql, conn); try { conn.Open(); SqlDataAdapter sqlda = new SqlDataAdapter(cmd); sqlda.Fill(this.tabComboBox);

Cristian Barca

pelling10 Profilo | Junior Member

Cavolo!!!!!
non ci avevo pensatooooooooooo!!!
Grazie mille!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5