Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Adattare dati database nei controlli
Forum - C# / VB.NET - Adattare dati database nei controlli

Avatar
Best (Normal User)
Rookie


Messaggi: 24
Iscritto: 12/09/2010

Segnala al moderatore
Postato alle 21:37
Domenica, 21/08/2011
Salve a tutti,
sono di nuovo qui con un nuovo problema :( spero di essere abbastanza chiaro, in ogni caso, mi spiegherò al meglio.
Ho un database locale (Sql Server Compact 4.0) contentente una tabella (Film) con 3 campi: ID(di tipo int), FilmName (di tipo nvarchar) e Locandina(di tipo nvarchar). Lo scopo del mio software è prelevare questi dati ed inserirli in determinati controlli: 2 label e 2 picturebox che conterranno rispettivamente il titolo del film e l'url della locandina che verrà assegnato alle picturebox tramite la proprietà ImageLocation. Bene, spiegato (spero bene) il funzionamento, ora mi ritrovo in un codice lungo e macchinoso

Codice sorgente - presumibilmente C#

  1. string comando = "SELECT * FROM [Film]   WHERE ID = " + (contatore);
  2.                 string comando2 = "SELECT * FROM [Film]  WHERE ID = " + (contatore + 1);
  3.                 SqlCeCommand command = new SqlCeCommand(comando, conn);
  4.                 SqlCeCommand command2 = new SqlCeCommand(comando2, conn);
  5.                 SqlCeDataReader reader = command.ExecuteReader();
  6.                 SqlCeDataReader reader2 = command2.ExecuteReader();
  7.                 while (reader.Read())
  8.                 {
  9.                     label2.Text = reader.GetString(1);
  10.                     pictureBox1.ImageLocation = reader.GetString(2);
  11.                 }
  12.                 while (reader2.Read())
  13.                 {
  14.                     label3.Text = reader2.GetString(1);
  15.                     pictureBox2.ImageLocation = reader2.GetString(2);
  16.                 }



in questo modo, popolo "correttamente" i controlli, ma, da come potete constatare, è un codice "orrendo", ovvero, ogni volta che devo inserire una label e un'altra picturebox devo fare questo procedimento che richiederebbe più tempo
e più memoria.
Avete qualche soluzione?

Mi scuso per la mia scarsa elaborazione della domanda, per altri chiarimenti chiedetemi pure.

Vi ringrazio in anticipo.

Ultima modifica effettuata da Best il 21/08/2011 alle 21:39
PM
Avatar
frungillo (Normal User)
Newbie


Messaggi: 3
Iscritto: 02/08/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 20:50
Mercoledì, 24/08/2011
Ciao, è altamente probabile che non abbia capito il problema, perchè io farei semplicemente cosi:
1- Aggiungo un Panel alla form (Magari uno AutoFlowLayoutPanel)
2- compilerei il codice cosi:
Codice sorgente - presumibilmente VB.NET

  1. 'Costruisco una stringa con la lista degli ID da prelevare.
  2. 'quindi la passo al database con una unica string SQL
  3. dim comando as String  = "SELECT * FROM [Film]   WHERE ID in ( " & contatore & "," & Contatore + 1 & ")"
  4. Dim Command as new SqlCeCommand (Comando,conn)
  5. Dim reader as SqlCeDataReader = Command.ExecuteReader()
  6. Do while reader.read()
  7.     Dim lbl as new Label
  8.     Dim Px as new PictureBox
  9.     lbl.text = reader.item(1).Tostring
  10.     px.ImageLocation = reader.item(2).Tostring
  11.     Panel.Controls.Add(lbl)
  12.     Panel.Controls.Add(px)
  13. Loop



Ovviamente il codice è in VB ma puoi facilemnte transponderlo in C#

Fammi sapere se ho centrato il problema.

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 17:28
Domenica, 28/08/2011
Ciò che cerchi di fare è un compito comune che il componente BindingNavigator si occupa di automatizzare:
http://totemslair.org/guide/viewchapter.php?guida=vb&id=76

PM