Autor Beitrag
jery19
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 30.04.10 08:17 
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.

ausblenden C#-Quelltext
1:
2:
3:
4:
 adapter.Fill(dataSet2);
            //Anzeigen der Daten im DataGrid
            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 user profile iconChristian S.: Color- durch C#-Tags ersetzt
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 30.04.10 08:37 
Euch auch einen schönen Morgen.

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
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.
user profile iconjery19 hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 8



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

ausblenden 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 array 
           string[] speichern = new string[6];
            //text wird in dem array gespeichert
            speichern[0] = FullName.Text;
            speichern[1] = WorkPhone.Text;
            speichern[2] = MobilePhone.Text;
            speichern[3] = EmailAddress.Text;
            speichern[4] = ProductDescription.Text;
            speichern[5] = UnitPrice.Text;

            

             //anzahl der schon vorhandenen daten wird ermittelt
            int anzahlDaten = dataGridView1.Rows.Count - 1 ;
            int a = 0;
          
            //for schleife die , die Daten einträgt
            
            for (int i = 1; i <= 6; i++, a++)
            {

           dataGridView1[i, anzahlDaten].Value = speichern[a];
          
            }



Danke Danielelf !

Moderiert von user profile iconChristian S.: Color- durch C#-Tag ersetzt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 30.04.10 08:50 
user profile iconjery19 hat folgendes geschrieben Zum zitierten Posting springen:
hab natürlich datagridview gemeint hehe...

Das war durch deinen Code-Auszug klar.

user profile iconjery19 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconjery19 hat folgendes geschrieben Zum zitierten Posting springen:
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:
user profile iconjery19 hat folgendes geschrieben Zum zitierten Posting springen:
... 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.

Jürgen

PS. Meinen vorigen Beitrag hast du wegen zeitgleicher Speicherung vermutlich übersehen. Bitte lies ihn auch noch durch.
jery19 Threadstarter
Hält's aus hier
Beiträge: 8



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