Autor Beitrag
ottto
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Fr 19.07.19 15:13 
Hallo,
ich bin gerade dabei mich mit der DataGridView anzufreunden.
Hab dabei aber noch ein Verständnisproblem.
Zur DGV(DgvSP) hab ich mir eine DataTable(dt) erstellt und diese auch per "DgvSP.DataSource = dt;" verbunden.
Die enthaltenen Daten werden in der DGV auch angezeigt.
Wenn ich die Inhalte auswerten möchte, bekomme ich die ZeilenZahl der DgvSP richtig angezeigt. Zur dt ist die ZeilenZahl aber 0.
Hab ich grundsätzlich einen Denkfehler? Die dt und auch die DgvSP nutzen doch die gleiche Datenbasis...

ausblenden volle Höhe 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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
        public Form1()
        {
            InitializeComponent();
 
        }
        DataTable dt = new DataTable("Person");

        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable("Person");
            dt.Columns.Add("Name", System.Type.GetType("System.String"));
            dt.Columns.Add("Vorname", System.Type.GetType("System.String"));
            dt.Columns.Add("PersNr", System.Type.GetType("System.Int32"));
            dt.Columns.Add("GebDat", System.Type.GetType("System.DateTime"));
            
            dt.Columns["Name"].AllowDBNull = false//Spalte muss gefüllt sein.
            dt.Columns["PersNr"].Unique = true//Inhalt darf nicht doppelt sein
            dt.Columns["PersNr"].AllowDBNull = false;

            dt.Rows.Add("Meier""Inge"123new DateTime(19990202));
            dt.Rows.Add("Müller""Inge"124new DateTime(19990202));
            dt.Rows.Add("Schulze""Inge"125new DateTime(19990202));
            DgvSP.DataSource = dt;
            
        }
        private void ButAnzeige_Click(object sender, EventArgs e)
        {
            LbLAnzeige.Text += "\n+++dt.Rows.Count+++" + dt.Rows.Count;
            LbLAnzeige.Text += "\n+++DgvSP.Rows.Count+++" + DgvSP.Rows.Count;

            //for (int i = 0; i < (dt.Rows.Count - 1); i++)
            //{
            //    LbLAnzeige.Text += dt.Rows[i]["Name"].ToString();
            //}

        }


Ausgabe:
ausblenden Quelltext
1:
2:
LbLAnzeige.Text += "\n+++dt.Rows.Count+++" + dt.Rows.Count; = 0
LbLAnzeige.Text += "\n+++DgvSP.Rows.Count+++" + DgvSP.Rows.Count; = 4

Danke.
Gruß.
ottto

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 19.07.19 15:36 
Stichwort: Lokale vs. Membervariable

Du hast mit
ausblenden C#-Quelltext
1:
DataTable dt = new DataTable("Person");					

eine neue lokale Variable erzeugt anstatt die vorhandene Membervariable zu benutzen.
->
ausblenden C#-Quelltext
1:
dt = new DataTable("Person");					

(oder die Zeile ganz löschen, da du ja schon diese mit der Membervariablen erzeugt hast)

Für diesen Beitrag haben gedankt: ottto