Listview Probleme
-
Hi,
ich habe noch nicht viel Ahnung von c# und bin auf folgendes Problem gestossen:
In meiner Anwendung wird aus einer Datenbank einiges ausgelesen. Dies soll (mit Subitems) in einem Listview dargestellt werden.
Bei der ersten Lösungsvariante klappt es nicht, da nicht alle Subitems ausgegeben werden (siehe Quellcode Teil 1). Bei der anderen Variante, die ich aber weniger für schick halte (siehe Quellcode Teil 2) funzt es. Aber eigentlich müsste doch Variante 1 auch funzen, wenn ich MSDN/Forum etc richtig gelesen habe. Wer kann mir sagen warum Variante 1 nicht richtig funzt aber Variante 2 ??
Gruß
NebuVariante 1: (funzt net) // InformationList ist mein ListView .. // DB Verbindung wird erstellt mit SQL Command etc // Lesen aus der Datenbank wird durchgeführt SqlDataReader myreader = SqlSelectCommand.ExecuteReader(); // Variable zum zählen der ausgegebenen Zeilen int iZeilenZaehler = -1; while (myreader.Read()) { iZeilenZaehler++; // Ergebnis aus DB wird ausgegeben und Subitems werden ergänzt InformationList.Items.Add(myreader.GetString(0),4); InformationList.Items[iZeilenZaehler].SubItems.Add("Test1"); InformationList.Items[iZeilenZaehler].SubItems.Add("Test2"); InformationList.Items[iZeilenZaehler].SubItems.Add("Test3"); InformationList.Items[iZeilenZaehler].SubItems.Add("Test4"); }
Variante 2: (funzt) SqlDataReader myreader = SqlSelectCommand.ExecuteReader(); int iZeilenZaehler = -1; while (myreader.Read()) { iZeilenZaehler++; InformationList.Items.Add(myreader.GetString(0),4); } for (int i = 0; i < iZeilenZaehler; i++) { InformationList.Items[iZeilenZaehler].SubItems.Add("Test1"); InformationList.Items[iZeilenZaehler].SubItems.Add("Test2"); InformationList.Items[iZeilenZaehler].SubItems.Add("Test3"); InformationList.Items[iZeilenZaehler].SubItems.Add("Test4"); }
-
Nö, nicht zeilenzählen
machste so:ListViewItem Item = new ListViewItem("Dein Item"); Item.SubItems.Add("Deine"); Item.SubItems.Add("Sub"); Item.SubItems.Add("-"); Item.SubItems.Add("Items"); ListView.Items.Add(Item);
Hoff es funzt!
-
Wenn ich das so mache (entsprechend der Anleitung von Swordfish) bekomme ich immer eine Fehlermeldung in der letzten Zeile der while- Schleife
while (myreader.Read()) { ListViewItem InformationList = new ListViewItem(myreader.GetString(0)); InformationList.SubItems.Add("Deine"); InformationList.SubItems.Add("Sub"); InformationList.SubItems.Add("-"); InformationList.SubItems.Add("Items"); ListView.Items.Add(InformationList); // Hier meckert der immer den Teil "ListView" an <-- bin wohl zu doof dafür... :( }
Folgene Fehlermeldung gibt der mir immer aus:
L:\LR_TOOLS\Win\LR Kontakt\V0100xx\V010000\source\LR Kontakt\MainForm.cs(629): An object reference is required for the nonstatic field, method, or property 'System.Windows.Forms.ListView.Items'
-
Weil Dein ListView sicherlich nicht "ListView" heißt ( InformationList ? ).
-
Noodles schrieb:
Weil Dein ListView sicherlich nicht "ListView" heißt ( InformationList ? ).
Jup, hab den korrekten Bezeichner aus Nebu's source übersehen.
-
Oh man da stand ich selber aufm schlauch gestern. Ist mit gestern abend vorm Spiegel eingefallen warum das net funzte...
Thx trotzdem. Es musste bei mir natürlich so aussehen:
while (myreader.Read()) { ListViewItem InformationListSubItem = new ListViewItem(myreader.GetString(0)); InformationListSubItem.SubItems.Add(myreader.GetString(1)); InformationListSubItem.SubItems.Add(myreader.GetString(2)); InformationListSubItem.SubItems.Add(myreader.GetString(3)); InformationListSubItem.SubItems.Add(myreader.GetString(4)); InformationList.Items.Add(InformationListSubItem); }
Man man man. Manchmal ist es wirklich besser einfach ma ne Pause zu machen und mal an was anderes zu denken...