Autor Beitrag
HarryM
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 30.12.15 21:40 
Hallo,

ich bin ein blutiger Anfänger in C#, versuche aber durch Learning by Doing und Tutorials im Internet ein bißchen was zu lernen.
Ich habe nach diesem Tutorial (www.youtube.com/watch?v=9Pbg-XFqqfA) eine SQL-basierte Datenbankdatei erstellt, die dann per DragNDrop auf meine Form gezogen, sodass ich jetzt ein DataGridView habe, in welchem ich Daten speichern kann. Nun möchte ich aber noch folgendes irgendwie lösen, was ich aber nicht hinbekomme, wobei es wahrscheinlich einfach ist.

Ich möchte nun alle Zeilen des GridViews durchgehen. Pro Zeile gibt es zwei Spalten, Name und Vorname, die ich nun in zwei Labeln "lblName" und "lblVorname" die Daten pro Zeile angezeigt werden. Das soll per Klick auf Button geschehen. Also, ich würde dann sozusagen einen Button "Folgender" oder so haben und wenn ich drauf klicke soll zuerst der Datensatz auf Zeile 0 angezeigt werden, klicke ich wieder drauf, soll der Datensatz von Zeile 1 angezeigt werden usw. bis es keine Datensätze mehr gibt.

Meine Überlegung in Pseudocode würden so aussehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
Wenn i < Anzahl aller Datensätze
  lade Datensatz von DataGridView an Zeile i
  setze Label.Text auf die Werte
sonst
  setze Label.Text = "Datensätze zu Ende";

Mein Problem ist im Grunde, dass ich nicht weiß, wie ich die Datensätze einzeln ansprechen kann. Ich finde nur die CurrentCell Methode, aber da wird auch tatsächlich nur die einzelne Zelle ausgegeben. Das reicht mir ja nicht, ich will ja beides ausgeben.

Könnt ihr mir da weiterhelfen?

Vielen Dank!

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mi 30.12.15 23:23 
Hallo. Ich hoffe, ich konnte dich richtig verstehen. Ich habe es so gemacht:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
private void Form1_Load(object sender, EventArgs e)
{
    dataGridView1.Columns.Add("nn""Nachname");
    dataGridView1.Columns.Add("vn""Vorname");
    dataGridView1.Rows.Add("Hans""Peter");
    dataGridView1.Rows.Add("Fleisch""Wurst");
    i = this.dataGridView1.Rows.Count;
}

private void button1_Click(object sender, EventArgs e)
{
    this.label1.Text = this.dataGridView1.Rows[rowIndex].Cells[0].Value.ToString();
    this.label2.Text = this.dataGridView1.Rows[rowIndex].Cells[1].Value.ToString();
    rowIndex++;
}

[EDIT]: Lege dir außerdem im Namespace einen Integer (rowIndex) an, welchen du immer per Buttonklick erhöhst. So bekommst du den Index der Rows :)

Bei mir haut es hin. Wenn der Index der Rows jedoch in der DataGridView nicht existiert, gibt es einen Fehler. Und diesen musst du umgehen. Ich hoffe, ich könnte dir helfen :)

Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 31.12.15 00:02 
Wenn du dich an das Tutorial gehalten hast dann hast du jetzt auch eine BindingSource auf der Form liegen. Über die BindingSource ist die Datenquelle an das Grid gebunden genauso kannst du auch ein Label an die Datenquelle binden.

Dazu:

- markiere eins der Label auf deiner Form
- in den Eigenschaften des Labels öffne den "(DataBindings)" Pseudoeintrag
- darunter findest du die Text Property
- dort öffnest du die ComboBox und wählst unterhalb des BindingsSource Namens die Property aus die du im Label angezeigt haben möchtest.

Die BindingSource hält selbst immer das aktuelle Object nach (die hat eine Current Property) wenn du also eine andere Zeile im Grid auswählst änderst du die Current Eigenschaft der BindingSource. Da das Label auch an die BindingSource gebunden ist wird sie ihre Anzeige entsprechend mit anpassen entsprechend dem Object hinter BindingSource.Current

PS. Da du ansprichst blutiger Anfänger zu sein. Was du gerad machst, lernst und ich dir hier gezeigt habe hat rein garnix mit Programmieren zu tun. Du lernst eigentlich nur wie ein spezieller Editor in einer speziellen Entwicklungsumgebung für eine spezielle Technik funktioniert. Das ist so als würde jemand die Anweisung auf der Tütensuppe ausprobieren (natürlich nur die Tütensuppe einer Firma für eine Geschmacksrichtung) und danach glauben er würde kochen.
HarryM Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 31.12.15 00:23 
Hallo ihr beiden,

vielen Dank für eure Antworten.

Ralf, das, was du vorschlägst, funktioniert für mich nicht, weil ich dann ja im DataGrid immer eine Stelle markieren muss. Das will ich ja nicht, sondern das DataGrid soll gar nicht mehr verwendet werden. Ich will nur noch über die Steuerung eines Buttons durch das Grid wandern und dann die beiden Spalten pro Zeile ausgeben.

Csharp-programmierer hat schon verstanden, was ich machen wollte. Aber dem Code erscheint bei mir nicht der Inhalt (also der Name), sondern eine Zahl, z.B. 1 oder 2.

Was könnte ich da falsch gemacht haben? Habe den Code so übernommen... außer halt die Namen angepasst.

Edit:

Bitte verzeiht, ich habe doch einen Fehler gemacht. Ich hatte auf das ausgeblendete ID Feld verwiesen. Nun stimmt alles... ich probiere mal weiter.

Mal was anderes:
Könnt ihr ein C# Buch empfehlen, bei dem man ein Projekt gemeinsam mit dem Autor umsetzt und so Schritt für Schritt etwas lernt? Ich habe sowas mal für PHP gesehen. Da wurde z.B. schrittweise ein Gästebuch, ein Counter oder ein kleines Forum gebaut und so in die unterschiedlichen Themen eingeführt. Sowas würde ich mir auch für C# wünschen.
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 31.12.15 00:46 
Zitat:
Bitte verzeiht, ich habe doch einen Fehler gemacht. Ich hatte auf das ausgeblendete ID Feld verwiesen. Nun stimmt alles... ich probiere mal weiter.


Funktioniert es jetzt so, wie du es möchtest mit meinem Algorithmus?

Zitat:
Könnt ihr ein C# Buch empfehlen, bei dem man ein Projekt gemeinsam mit dem Autor umsetzt und so Schritt für Schritt etwas lernt? Ich habe sowas mal für PHP gesehen. Da wurde z.B. schrittweise ein Gästebuch, ein Counter oder ein kleines Forum gebaut und so in die unterschiedlichen Themen eingeführt. Sowas würde ich mir auch für C# wünschen.


Ich könnte dir eine Videoreihe von YouTube empfehlen. Gib einfach mal CsDoctore (oder so ähnlich) ein. Dort lernst du sehr praxisorientiert die wichtigsten Grundlagen der Programmierung in C# (also Speicheralgorithmen, die Eigenschaften der einzelnen Controls, GUI design). Ich habe so angefangen und jetzt ist es ein Hobby für mich :)

Als Buch könnte ich dir "Einstieg in Visual C# 2013" empfehlen, dort sind mehrere Kapitel über grundlegende Dinge. Im letzten Kapitel sind Übungsaufgaben, die du versuchen kannst selber zu lösen - und wenn du nicht weiter kommst, sind die Lösungen auf der mitgelieferten DVD. Aber dieses Buch kann ich nur für Leute empfehlen, die vorher noch nie was mit C# zu tun hatten.

Hast du dir die Videoreihe angesehen, würde ich dir dieses Buch nicht empfehlen. Aber mein Tip geht an die Videoreihe ;)
Mfg Csharp-programmierer :wink:
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 31.12.15 01:11 
Zitat:
Ralf, das, was du vorschlägst, funktioniert für mich nicht, weil ich dann ja im DataGrid immer eine Stelle markieren muss.

Das markieren im Grid war nur ein Beispiel. Die entscheidende Info war eigentlich das der aktuelle Datensatz von der BindingSource verwaltet wird.
Wenn du anders den nächsten vorherigen Datensatz willst ruf an der BindingSource die MoveNext/MovePrevious Methoden auf um dich entsprechend in der Datenmenge zu positionieren.
Dann kannst du von mir aus auch das Grid von der Form löschen es wird weiterhin auch ohne Grid funktionieren.
Zitat:
Könnt ihr ein C# Buch empfehlen, bei dem man ein Projekt gemeinsam mit dem Autor umsetzt und so Schritt für Schritt etwas lernt?


Schwierig. Ein Web Project ist was völlig anderes als eine Konsolenanwendung und eine Dektopanwendung ist wiederum was völlig anderes. Was wäre denn ein sinnvolles Project für dich?
Tutorials von Microsoft für alles mögliche findest du in der MSDN(Vermutlich interessieren dich die Tuts unter "Make desktop applications" am ehesten)