Entwickler-Ecke
C# - Die Sprache - BITTE ! c# datagrid neue Zeile einfügen HILFE!
jery19 - Fr 30.04.10 08:17
Titel: BITTE ! c# datagrid neue Zeile einfügen HILFE!
Ein wunderschönen Guten Morgen,
ich muss euch heut schon wieder nerven. Ich hab ein datagrid der mit einer Access Datenbank verbunden ist . Das Datagrid wird einem adapter und einem dataset befüllt.
C#-Quelltext
1: 2: 3: 4:
| adapter.Fill(dataSet2); dataGridView2.DataSource = dataSet2; dataGridView2.DataMember = dataSet2.Tables[0].TableName; |
ich habe aber auch ein textbox in dem ich was eintragen möchte und sobald ich auf den button drücke soll er das in der neuen zeile reinschreiben. also er soll mit dem
rows.count die anzahl der jetzigen daten und einen dazu addieren und den dan einfügen.
ich weiss das thema hattet ihr tausendmal nur das Problem ist ich werde nicht schlau ??
Vielen Vielen Dank im Vorraus
Moderiert von
Christian S.: Color- durch C#-Tags ersetzt
danielf - Fr 30.04.10 08:26
Dir auch einen schönen Morgen. Pass nur auf, dass Jürgen den Beitrag nicht so schnell entdeckt - der hasst es nämlich wenn man DataGrid und DataGridView vertauscht ;)
Im Prinzip machst du das schon richtig DatenQuelle -> DataSet -> (Databinding -> ) -> DataGridVIEW.
Wenn du nun eine Zeile hinzufügen willst, kanst du dataSet2[tabllename/index].NewRow() verwenden um DataRow zu bekommen. Dieses kannst du wiederum mit den verschiedenen Spalteinformationen füllen. DataRow d; d[name] = blub;
Gruß
JüTho - Fr 30.04.10 08:37
Euch auch einen schönen Morgen.
danielf hat folgendes geschrieben : |
Pass nur auf, dass Jürgen den Beitrag nicht so schnell entdeckt - der hasst es nämlich wenn man DataGrid und DataGridView vertauscht ;) |
Und außerdem hasst er es, wenn behauptet wird, dass ein DataGrid oder auch DataGridView an eine Datenbank gebunden ist. Nicht das DGV wird mit dem Adapter befüllt, sondern das DataSet; dann wird die Verbindung geschlossen; das DGV wird an die DataTable gebunden. :)
Aber zur Sache habe ich auch noch etwas beizutragen.
jery19 hat folgendes geschrieben : |
also er soll mit dem rows.count die anzahl der jetzigen daten und einen dazu addieren und den dan einfügen. |
Das halte ich nicht für eine geeignete Lösung. Es mag manchmal passen; aber sobald nicht alle vorhandenen Daten geladen werden oder Zeilen gelöscht wurden, passt die ID (denn darum geht es doch wohl) nicht mehr.
Wenn überhaupt, dann hole das Maximum der vorhandenen IDs:
C#-Quelltext
1: 2:
| table = dataSet.Tables[0]; int maxid = table.Compute("Max(ID)", ""); |
Einzelheiten für die Formulierung des Ausdrucks siehe DataColumn.Expression; das passt übrigens auch für Sortierung und Filtern.
Gruß Jürgen
jery19 - Fr 30.04.10 08:38
Danke erstmal für die mega schelle antwort :) !!
hab natürlich datagridview gemeint hehe...
also was ich nicht ganz verstehe ist was ist mit tabellename gemeint der Spaltennaem oder der Name der Tabelle in der Datenbank und wie trage ich den inhalt der textbox mit diesem code ein ->
dataSet2[tabllename/index].NewRow() ??
brauch ich unbedingt ein DataBinding? Es mag sein das es viele dumme fragen sind aber ich sitz schon seit gestern dran und ich les mir sämtliche tutorials durch nur finde ich kein zusammenhang mit meinem code.
Das lustige ist ich habe schon ein code programmiert der eine nue zeile einfügt nur sobald ich die zeile andrücke verschwindet der text der Text wird in einem string array gespeichert und über ein for schleife eingetragen hab den code mal rein geposted vlt kannst du mir dann weiterhelfen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| string[] speichern = new string[6]; speichern[0] = FullName.Text; speichern[1] = WorkPhone.Text; speichern[2] = MobilePhone.Text; speichern[3] = EmailAddress.Text; speichern[4] = ProductDescription.Text; speichern[5] = UnitPrice.Text;
int anzahlDaten = dataGridView1.Rows.Count - 1 ; int a = 0; for (int i = 1; i <= 6; i++, a++) {
dataGridView1[i, anzahlDaten].Value = speichern[a]; } |
Danke Danielelf !
Moderiert von
Christian S.: Color- durch C#-Tag ersetzt
JüTho - Fr 30.04.10 08:50
jery19 hat folgendes geschrieben : |
hab natürlich datagridview gemeint hehe... |
Das war durch deinen Code-Auszug klar.
jery19 hat folgendes geschrieben : |
also was ich nicht ganz verstehe ist was ist mit tabellename gemeint der Spaltennaem oder der Name der Tabelle in der Datenbank und wie trage ich den inhalt der textbox mit diesem code ein -> dataSet2[tabllename/index].NewRow() ?? |
Tabellenname ist der Name der Tabelle, aber nicht in der Datenbank, sondern im DataSet. Den hättest du beim Fill direkt angeben können (sinnvoll ist es, denselben Namen wie in der Datenbank zu verwenden); so hat das Framework einen Namen wie "dataTable1" zugewiesen. Aber Daniel hat alternativ auch den Index (innerhalb des DataSet) genannt, und den habe ich in meinem o.g. Code benutzt.
jery19 hat folgendes geschrieben : |
brauch ich unbedingt ein DataBinding? |
Unbedingt! Das DGV ist, wie der Name sagt, zur Anzeige einer Datenmenge gedacht. Manipulationen der Daten per Code sind in der Datenmenge (hier: DataTable) vorzunehmen. Deshalb liegt dein Code ziemlich daneben, und deshalb trifft das zu:
jery19 hat folgendes geschrieben : |
... nur finde ich kein zusammenhang mit meinem code. |
Selbst wenn du die Zeile direkt in das DGV einfügen würdest, fehlt ein Befehl wie "Einfügen". Bitte, bitte mach es so, wie Daniel vorschlägt, mit DataTable.NewRow. Dazu gibt es (natürlich) ein Beispiel in der SDK-Doku/MSDN/Hilfe.
Übrigens: Weißt du, dass ein Array bei 0 gezählt wird? Wieso beginnt die for-Schleife bei 1?
Und benutze die richtige Code-Formatierung, siehe
Hilfe: Sourcecode [
http://www.c-sharp-forum.de/help_schreiben_bbcodes_source.html&sub=,19,27,32&popup=1].
Jürgen
PS. Meinen vorigen Beitrag hast du wegen zeitgleicher Speicherung vermutlich übersehen. Bitte lies ihn auch noch durch.
jery19 - Mi 05.05.10 22:47
Hi also nennt mich wie ihr wollt aber ich check es einfach nicht. ich bekomm das nicht hin , könnt ihr mir nicht ein kleines Beispiel geben ?? es ist meine abschlussarbeit und ich hock da schon ne woche wegen einer poppligen neuen zeile bitte nur einmal noch ein Auge zudrücken :( !!!
ich habe alles durchgelesen ich krieg es nicht hin.wünschte mir ich könnte das genauso gut wie ihr :(!!!!
vielen vielen dank an euch alle !!!!!! und einen wunderschönen angenehmen abend.
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!