none
DataTable Daten werden nicht hinzugefügt DataTable.Rows.Add() RRS feed

  • 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

    Montag, 4. Juni 2012 09:37

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

    Montag, 4. Juni 2012 10:04
    Beantworter

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

    Montag, 4. Juni 2012 10:04
    Beantworter
  • 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.

    Entschuldige dass ich bläd Frage, aber ich weise tabelRow1, tabeleRow2 und tabeleRow3 zu.
    //Hinzufügen derTabelle zur Reihe
    tabele.Rows.Add(tabeleRow1);
    tabele.Rows.Add(tabeleRow2);
    tabele.Rows.Add(tabeleRow3);


    Montag, 4. Juni 2012 10:48
  • 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

    Montag, 4. Juni 2012 11:02
    Beantworter
  • Vielen Dank Elmar,

    da war ich vorreilig und habe einen Sehr dummen Fehler gemacht,


    Bitte klärt mich über falsche Fachbegriffe aus Beste Grüße Florian Reiter

    Montag, 4. Juni 2012 11:22