Hallo zusammen,
ich habe nun zu euch ins Forum gefunden 😃
Ich programmiere gerade ein Programm, in dem ich auf Daten aus einer SQL-Datenbank zugreife und diese Daten in einem Listview anzeigen lasse. Zudem habe ich eine Imagelist, in der alle Bilder, die in einem bestimmten Ordner gespeichert sind, geladen werden. Das klappt auch soweit ganz gut.
Jetzt kommt aber mein eigentlichen Problem:
Wie schaffe ich es, dass jeweils ein Datensatz aus der Datenbank mit dem entsprechenden Bild verknüpft und gemeinsam im Listview angezeigt werden? Für jeden Datensatz ist genau in Bild im Ordner gespeichert. Der Name Bildes entspricht genau der ersten Spalte des Datensatzes, also ist identisch.
Hier rufe ich die Daten aus der Datenbank ab und zeige diese im Listview an
public void lvSetsGallery_load()
{
SqlConnection con = new SqlConnection(connstr);
SqlDataReader rdr;
SqlCommand cmd = new SqlCommand();
con.Open();
cmd.CommandText = @"Verbindung zu Datenbank";
cmd.Connection = con;
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
ListViewItem lv = new ListViewItem(rdr[0].ToString() + Environment.NewLine + rdr[1].ToString(), 0);
lv.SubItems.Add(rdr[0].ToString());
lv.SubItems.Add(rdr[1].ToString());
lv.SubItems.Add(rdr[11].ToString());
lv.SubItems.Add(rdr[8].ToString());
lv.SubItems.Add(rdr[6].ToString());
lv.SubItems.Add(rdr[2].ToString() + " €");
lv.SubItems.Add(rdr[3].ToString());
lv.SubItems.Add(rdr[4].ToString());
lvSets.Items.Add(lv);
}
con.Close();
}
ich weiß, die "0" in
ListViewItem lv = new ListViewItem(rdr[0].ToString() + Environment.NewLine + rdr[1].ToString(), 0);
ruft immer nur das Bild mit dem Index "0" auf, also aktuelle immer das gleiche. Wie kann ich an dieser Stelle den Datensatz mit dem Namen des Bildes verknüpfen?
Hier lade ich die Bilder in die Imagelist
private void ilSets_fill()
{
paths = Directory.GetFiles("Dateipfad");
foreach (string path in paths)
{
ilSets.Images.Add("", Image.FromFile(path));
}
}
Vielen Dank für eure Hilfen 😃
Dein Code macht einiges falsch!
Du disposed deinen DataReader nicht, umbedingt machen(using oder direkten Aufruf von Dispose).
Auch solltest du deinen Datenbank Code dringend aus der UI nehmen, da gehört der nicht hin.
Siehe Drei-Schichten-Modell.
Auch solltest du die Daten im DataReader nicht per Index sondern per Spaltenname auslesen.
Sonst kann keiner wissen welcher Wert aus dem Reader aus dem jeweiligen Index kommt.
Bei Änderungen der Spalten, stimmen dann auch deine Auflistungen nicht mehr!
Zum Verknüpfen musst du eigentlich nur den Namen aus dem aktuellen Datensatz auslesen und das Bild ermitteln.
Eigentlich dürfte dies kaum ein Problem sein, da du ja den Namen hast und eigentlich alles hast um das Bild zu finden.
Wo genau liegt das Problem?
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.