Entwickler-Ecke
Basistechnologien - Grid View Databinding
Dabra - Mo 10.02.14 18:45
Titel: Grid View Databinding
Hallo User der Entwickler-Ecke,
Ich habe eine grundsätzliche Frage zur wie bzw wann man eine Grid View verwendet.
Habe ein Testprogramm erstellt und habe dort eine BindingList über Databinding in die Grid View eingebunden. Hat nach einiger Hilfe aus dem Forum dann auch funktioniert.
Habe nun eine Liste mit Objekten die selbst Listen enthalten.
Ist es schlecht wenn ich die Grid View nicht über das Databinding fülle sondern die Spalten von "Hand" mit for Schleifen fülle?
Bzw. gibt es eine Möglichkeit bestimmte Inhalte verschiedener Listen über Databinding in einer Grid View aufzulisten?
Vielen Dank schonmal für die Hilfe
Ralf Jansen - Mo 10.02.14 19:33
Schreib dir ein Model das die Daten so enthält wie du sie in deiner UI präsentieren möchtest. Es ist durchaus üblich für die verschiedene Aspekte einer Anwendung (UI, Bearbeitung, Perstierung) eigene Modelle zu haben und dazwischen zu konvertieren. Code der zwischen Klassen konvertiert ist üblicherweise wesentlich besser lesbar und damit handhabarer als Code der zwischen einer Modelklasse und einen UI Control hin und her konvertiert.
Dieses konvertieren zwischen deinen Modelklassen und einer Klasse zum Anzeigen kann im einfachsten Fall auch ein simpler LINQ Ausdruck sein der die Daten passend aggregiert. Was du wie genau tun solltest hängt aber auch davon ab ob das nur zum Anzeigen oder auch zum Bearbeiten der Daten sein soll.
Dabra - Mo 10.02.14 20:10
Vielen Dank schon mal für die Mühe.
Bin leider ein Anfänger was C# angeht daher habe ich leider Probleme zu verstehen was du meinst.
So wie ichs verstanden habe?
Ich sollte mir ein Konzept überlegen in dem Ich die Daten alle in einer Liste habe?
Als Beispiel zu meinem Problem:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public class Fach {
private string m_Name; private List<int> _ka; private List<int> _sa; } |
C#-Quelltext
1: 2: 3: 4: 5:
| public partial class frm1 : Form { List<Fach> _fach = new List<Fach>(); } |
Möchte nun die Daten der _fach Liste in das Gridview einbinden.
Der Inhalt von _ka und _sa soll dann in die Spalten eingetragen werden.
Ist das über Databinding möglich?
Tut mir leid das ich deine Antwort nicht ganz nachvollziehen. Bin noch Anfänger.
Vielen Dank für die Hilfe
Ralf Jansen - Mo 10.02.14 21:22
Nein. Erstens sind die beiden Listen privat und zweitens brauchst du fürs komplexe Databinding Klassen die Zeilen im DataGridView darstellen würden. Gebunden wird dann eine Liste (zumindest irgendwas aufzählbares) dieser Objekte. Mal ganz abgesehen davon das der Zusammenhang zwischen Einträgen in _ka und _sa über den Index in der Liste von mir eher als Zufall bewertet werden würde und kaum Grundlage eines Designs sein sollte. Kannst du erklären wofür _ka und _sa stehen? Wenn ich verstehe wofür die stehen kann ich vielleicht eine sinnvolle Klassenstruktur empfehlen bevor wir anfangen die Daten einfach nur für die Darstellung zu transponieren aber diese Klasse ansonsten beibehalten würden.
Dabra - Mo 10.02.14 21:47
Vielen Dank für die Mühe.
Der Hintergrund ist ein Notenrechner.
_ka = Liste mit Noten für Kurzarbeiten
_sa = Liste mit Noten für Schulaufgaben
Die Klasse ist ein Fach mit dem Namen und den zugehörigen Arbeiten mit Noten
Das Ziel sollte sein das Ich in einer Listbox das Fach auswähle und in der Grid View die zugehörigen Noten auftauchen.
Bspw.
Fach: Englisch
1.Kurzarbeit | 2. Kurzarbeit | 1. Schulaufgabe | 2. Schulaufgabe
2 2 3 4
Die Anzahl der Kurzarbeiten und Kurzarbeiten wollte ich über den "Count" der Liste machen da die Anzahl unterschiedlich sein kann.
Hab leider keine Idee wie ein Design aussehen soll.
Hatte das gleiche schon mit mehreren Listboxen realisiert. Dort habe ich alles mit for Schleifen in die Listbox eingetragen. Mir wurde jedoch gesagt das die Lösung mit der Listbox nicht sonderlich "schön" ist. Und da wurde mir das Grid View empfohlen. Und damit kämpfe ich nun.
Vielen Dank für deine Mühe. Hoffe es macht nicht allzu große Umstände.
Ralf Jansen - Mo 10.02.14 22:07
Man könnte ein DataGridView dafür ~missbrauchen~ aber ein DataGridView ist für tabellarische Darstellungen gedacht heißt fixe Anzahl von Spalten bei beliebiger Anzahl von Zeilen.
Du hast aber eher eine beliebige Anzahl Spalten und 1(?) Zeile. Wenn du mehr als eine Zeile (mehrere Fächer) haben möchtest dann hast du dann wahrscheinlich aber eine unterschiedliche Anzahl von Spalten da je Fach unterschiedliche Anzahl von Noten haben kann. Das passt erstmal gar nicht mit etwas tabellarischem zusammen.
Kannst du eine maximale Anzahl von Kurzarbeit und Schulaufgaben Noten festlegen? Dann solltest du eine Klasse erstellen wo für jedes Note eine Property vorgesehen ist. Die Daten dann von deiner Fach Klasse in diese Klasse umfüllen und dann eine Liste der neuen Klasse an das Grid binden.
Dabra - Mo 10.02.14 22:17
Vielen Dank für die Hilfe.
Der Gedanke war das genau eine Zeile angezeigt wird.
Das Fach soll außerhalb des Grid Views ausgewählt werden.
Das Problem war das die Methoden mit den Listboxen nicht wirklich gut aussah.
Eine tabellarische Darstellung fand ich ansehnlicher.
Das mit der Maximalen Anzahl funktioniert. Auf die Idee bin ich noch nicht gekommen.
Werds jetzt mal über diese Methode versuchen.
Vielen Vielen herzlichen Dank für die Hilfe
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!