Benutzer mit den meisten Antworten
DataTable Daten werden nicht hinzugefügt DataTable.Rows.Add()

Frage
-
Hallo Leute,
ich habe ein Problem dass die Datenzeilen die ich zu meiner Tabelle hinzufügen möchte nicht angezeigt werden. Ich erzeuge zuerst ein Objekt als DataRow und füge sie dan mit DataTable.Rows.Add(DataRow) zur Tabelle hinzu nur wird die Tabelle nur bei der Ersten Zeille mit Daten befüllt und die andren bleiben leer, nicht Null,
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Dataset { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// Datei öffnen /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <returns>Pfad</returns> private void cmdÖffnen_Click(object sender, EventArgs e) { string strPfad = string.Empty; OpenFileDialog FileDialog1 = new OpenFileDialog(); FileDialog1.Filter = "txt files (*.txt)|*.txt|csv Dateien (*.csv)| *.csv|All files (*.*)|*.*"; if (FileDialog1.ShowDialog() == DialogResult.OK) strPfad = FileDialog1.FileName; txtPfad.Text = strPfad; } private void cmdEinlesen_Click(object sender, EventArgs e) { DataTable tabele = new DataTable(); //Erzeugen der Tabelle //Erzeugen der Spalten DataColumn ID = new DataColumn("ID",typeof(string)); DataColumn Name = new DataColumn("Name", typeof(string)); DataColumn Ort = new DataColumn("Ort", typeof(string)); DataColumn Telefon = new DataColumn("Telefon", typeof(string)); DataColumn Sprache = new DataColumn("Sprache", typeof(char)); //Hinzufügen der Spalten zur Tabelle tabele.Columns.Add(ID); tabele.Columns.Add(Name); tabele.Columns.Add(Ort); tabele.Columns.Add(Telefon); tabele.Columns.Add(Sprache); //Eigenschaft PrimaryKey bekommt die Spalte Tabele.Columns["ID"] // tabele.PrimaryKey = new DataColumn[] { tabele.Columns["ID"] }; //Erzeugen einer Reihe DataRow tabeleRow1 = tabele.NewRow(); tabeleRow1[ID] = "1"; tabeleRow1[Name] = "Hans Peter"; tabeleRow1[Ort] = "St. Marienkirchen /P."; tabeleRow1[Telefon] = "07249/4165"; tabeleRow1[Sprache] = "D"; DataRow tabeleRow2 = tabele.NewRow(); tabeleRow1[ID] = "2"; tabeleRow1[Name] = "Mike Anderson"; tabeleRow1[Ort] = "Bad Schallerbach"; tabeleRow1[Telefon] = "07249/4638"; tabeleRow1[Sprache] = "E"; DataRow tabeleRow3 = tabele.NewRow(); tabeleRow1[ID] = "3"; tabeleRow1[Name] = "Sandra"; tabeleRow1[Ort] = "Wels"; tabeleRow1[Telefon] = "07240/3453"; tabeleRow1[Sprache] = "D"; //Hinzufügen derTabelle zur Reihe tabele.Rows.Add(tabeleRow1); tabele.Rows.Add(tabeleRow2); tabele.Rows.Add(tabeleRow3); for (int i = 0; i < tabele.Rows.Count; i++) { lblStatus.Text = lblStatus.Text + "- " + Convert.ToString(tabele.Rows[i]["Name"]); } string x = Convert.ToString(tabele.Rows[1]["Name"]); } } }
bitte klärt mich Über Falsche Fachbegriffe auf, Danke
Beste Grüße
Florian
Antworten
-
Hallo Florian,
wenn Du mehrere Variablen verwendest, so solltest Du sie auch verwenden.
Oben erzeugst Du zwar tabeleRow1, tabeleRow2, tabeleRow3, zuweisen tust Du die Werte aber immer tabeleRow1.
Um solche Fehler zu vermeiden (die uns allen schon unterlaufen sind), empfiehlt es sich,
die Zahl der Variablen auf das Nötigste zu beschränken (hier reicht eine):DataRow tabeleRow = tabele.NewRow(); tabeleRow[ID] = "1"; // ... tabele.Rows.Add(tabeleRow); tabeleRow = tabele.NewRow(); tabeleRow[ID] = "2"; // ... tabele.Rows.Add(tabeleRow); // ...
Alternativ kann man ganz darauf verzichten:
tabele.Rows.Add("4", "Petra", "Wels", "07240/3453", "D");
(wobei die Reihenfolge der Spalten beachtet werden muss).
Gruß Elmar
- Als Antwort markiert Florian.Reiter Montag, 4. Juni 2012 11:22
Alle Antworten
-
Hallo Florian,
wenn Du mehrere Variablen verwendest, so solltest Du sie auch verwenden.
Oben erzeugst Du zwar tabeleRow1, tabeleRow2, tabeleRow3, zuweisen tust Du die Werte aber immer tabeleRow1.
Um solche Fehler zu vermeiden (die uns allen schon unterlaufen sind), empfiehlt es sich,
die Zahl der Variablen auf das Nötigste zu beschränken (hier reicht eine):DataRow tabeleRow = tabele.NewRow(); tabeleRow[ID] = "1"; // ... tabele.Rows.Add(tabeleRow); tabeleRow = tabele.NewRow(); tabeleRow[ID] = "2"; // ... tabele.Rows.Add(tabeleRow); // ...
Alternativ kann man ganz darauf verzichten:
tabele.Rows.Add("4", "Petra", "Wels", "07240/3453", "D");
(wobei die Reihenfolge der Spalten beachtet werden muss).
Gruß Elmar
- Als Antwort markiert Florian.Reiter Montag, 4. Juni 2012 11:22
-
wenn Du mehrere Variablen verwendest, so solltest Du sie auch verwenden.
Oben erzeugst Du zwar tabeleRow1, tabeleRow2, tabeleRow3, zuweisen tust Du die Werte aber immer tabeleRow1.
//Hinzufügen derTabelle zur Reihe tabele.Rows.Add(tabeleRow1); tabele.Rows.Add(tabeleRow2); tabele.Rows.Add(tabeleRow3);
-
Hallo Florian,
aber nicht im entscheidenden Mittelteil!
DataRow tabeleRow2 = tabele.NewRow(); tabeleRow1[ID] = "2"; tabeleRow1[Name] = "Mike Anderson"; tabeleRow1[Ort] = "Bad Schallerbach"; tabeleRow1[Telefon] = "07249/4638"; tabeleRow1[Sprache] = "E";
Oben ist eine "2" danach wieder die "1" - und das Ganze wiederholt sich.
Gruß Elmar