Entwickler-Ecke

WinForms - DataGridView Fehler


Csharp-programmierer - Di 29.03.16 18:18
Titel: DataGridView Fehler
Hallo meine lieben. Ich habe eine Datagridview. Der Benutzer soll Columns selber hinzufügen und je nach dem die Rows hinzufügen.

Beispielsweise als Columns dann Name|Vorname|Alter.

Die Tabelle sieht dann beispielsweise so aus:

Name|Vorname|Alter
Mustermann|Max|30
Jonas|Friedrich|15


Wenn ich nun einen Button drücke, sollen alle Daten von links nach rechts so erscheinen: Mustermann,Max,30;Jonas,Friedrich,15;....
Also von links nach rechts und von oben nach unten. Da der Benutzer verschiedene Columns hinzufügen kann, wird es relativ schwer. Mein Versuch:

C#-Quelltext
1:
2:
for (int x = 0; x < Int16.Parse(this.textBox2.Text); x++)
                this.dataGridView1.Rows.Add(); //Je nach dem wie viele Zeilen der Benutzer auswählt



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
string s = "";
            array = new string[Int16.Parse(this.textBox2.Text)];

            xy = 0;

            for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
            {
                DataGridViewRow row = this.dataGridView1.Rows[i];
                s += row.Cells[array[xy]].Value.ToString() + ",";
                xy++;
                s += row.Cells[array[xy]].Value.ToString() + ",";
                //und so weiter. Ist aber schwer, wenn man nicht weiß, wie viele Columns
            }

            MessageBox.Show(s);



C#-Quelltext
1:
2:
3:
4:
5:
array = new string[Int16.Parse(this.textBox2.Text)];
            this.dataGridView1.Columns.Add(this.textBox1.Text, this.textBox1.Text);
            array[xy] = (this.textBox1.Text);
            xy++;
            this.textBox1.Text = "";


Ich hoffe, ihr versteht mein Problem. Mfg :)


Ralf Jansen - Di 29.03.16 18:22

Zitat:
Da der Benutzer verschiedene Columns hinzufügen kann


Bestimmte Columns aus einer Auswahl von Columns oder frei definierbare Columns?


Csharp-programmierer - Di 29.03.16 18:56

Die Columns sind frei definierbar.


Ralf Jansen - Di 29.03.16 19:21


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
StringBuilder text = new StringBuilder();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    if (!row.IsNewRow && row.Selected)
        text.AppendLine(string.Join(", ", row.Cells.Cast<DataGridViewCell>().Select(x => x.Value?.ToString())));
}
MessageBox.Show(text.ToString());


Gibt alle selektierten Rows (am besten wenn das Grid auf Multiselect steht und SelectionMode auf FullRowSelect) eine Grids als kommaseparierte Liste aus.


Csharp-programmierer - Mi 30.03.16 19:06

Vielen Dank. Jetzt funktioniert es :)