Autor Beitrag
Dabra
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 10.02.14 18:45 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: Dabra
Dabra Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
    public class Fach
    {

        //Eigenschaften
        private string m_Name;
        private List<int> _ka;
        private List<int> _sa;
    }


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
    public partial class frm1 : Form
    {
        //Eigenschaften
        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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: Dabra
Dabra Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: Dabra
Dabra Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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