PDA

View Full Version : [C#] Popolare un form Figlio


race2
30-10-2007, 14:41
Salve, ho un problema che non riesco a spuntare,
ho un Form MdiContainer dove sono contenuti 2 Form Figli e una Classe che mi gestisce tutte le Query e altre operazioni fatte nel DB,

- formFiglio1 contenente una ListView
- formFiglio2 c'è un semplice Button
- DbManager è una Classe dove sono contenuti tutti i codici per la gestione del Database
e quindi tutti i DataSet, DataTable, SqlCommand, Query, etc...

dal formFiglio2 vorrei lanciare il comando per popolare la ListView del formFiglio1.

come posso fare ???

giangian2
31-10-2007, 09:20
Ciao,
ci possono essere vari modi per fare questo.
La prima che mi viene in mente:

- il formFiglio2 ha un evento che viene chiamato quando si deve popolare la listview (l'evento puo` avere anche uan serie di parametri)
- il formFiglio1 si registra su quell'evento
- al formFiglio2 viene notificato l'evento e con i parametri popoli la lista.

ma la listview la devi popolare attingendo dal DB?

ciao

race2
31-10-2007, 09:23
Si certo,
la Classe DbManager mi restituisce il DataSet con i dati.

race2
31-10-2007, 10:06
Ecco come dovrei fare ma non riesco a vedere la ListView...


//qui sono in formFiglio2

DbManager oDbManager = new DbManager();
oDbManager.PopoloVisite(lvVisite); //lvVisite è la ListView





//qui sono nella Classe DbManager

public bool PopoloVisite(ListView lvwList)
{
lvwList.Items.Clear();
ListViewItem li;

MySqlDataAdapter da = new MySqlDataAdapter();
DataSet ds = new DataSet();
da.TableMappings.Add("Table", "visite");
MySqlCommand oComm = new MySqlCommand("### SQL ###", m_oConn);

oComm.CommandType = CommandType.Text;

try
{
da.Fill(ds, "visite");
}
catch
{
return false;
}

DataTable dt = ds.Tables["visite"];

foreach (DataRow dr in dt.Rows)
{
li = lvwList.Items.Add(Convert.ToString(dr["iID"]));
li.SubItems.Add(Convert.ToString(dr["sVisita"]));
}

return true;
}