Beispiel-Tabelle für das DataGridView
Frank Dzaebel, erstellt am: 26.3.2006, zuletzt geändert: 11.11.2006
Kategorie: DataGridView, .NET-Version: 2.0
Kleines Beispiel des Füllens eines DataGridViews durch Erstellung eines eigenen DataTables. Bool-Typen werden automatisch durch Checkboxen dargestellt. Das DefaultCellStyle.Format "dd.MMMM yyyy" formatiert die Datums-Spalte wie gewünscht.
Ein weiteres Beispiel eines ungebundenen DataGridViews wird hier dargestellt. Es zeigt die ToString()-Überschreibung einer Klasse, die somit in der DataGridView-Zelle angezeigt wird. Weiterhin wird deutlich, wie man über Casting auf Member des dahinterliegenden Typs zugreifen kann.
Inhalt:
Gebundenes Szenario
Gebundenes Szenario2 mit Attributen
Ungebunden mit Klassen-Instanzen

Gebundenes Szenario
using System;
using System.Windows.Forms;
using System.Data;
using System.Drawing;
namespace DataGridViewValidate
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += new EventHandler(Form1_Load);
}
private void Form1_Load(object sender,EventArgs e)
{
DataGridView dataGridView1 = new DataGridView();
DataTable dt = new DataTable ("Daten");
dt.Columns.Add(new DataColumn("Name"));
dt.Columns.Add(new DataColumn("Reich", typeof(bool)));
dt.Columns.Add(new DataColumn("Neffen", typeof(int)));
dt.Columns.Add(new DataColumn("Geburtsdatum", typeof(DateTime)));
AddNewRow(dt,"Dagobert Duck",true ,1,new DateTime(1962,10,11));
AddNewRow(dt,"Donald Duck" ,false,3,new DateTime(1973, 8,12));
AddNewRow(dt,"Gustav Gans" ,false,0,new DateTime(1973, 6,13));
AddNewRow(dt,"Trick Duck" ,false,0,new DateTime(1985, 4,14));
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
dataGridView1.Location = new Point(15,15); this.Controls.Add(dataGridView1);
BreiteAnSpaltenAnpassen(dataGridView1);
dataGridView1.Columns[3].DefaultCellStyle.Format = "dd.MMMM yyyy";
}
private void AddNewRow(DataTable dt,string name,bool reich,int neffen,DateTime geburtsDatum)
{
DataRow dr = dt.NewRow();
dr[0] = name; dr[1] = reich; dr[2] = neffen; dr[3] = geburtsDatum;
dt.Rows.Add(dr);
}
private void BreiteAnSpaltenAnpassen(DataGridView dgv)
{
int wdth = dgv.RowHeadersWidth + (int)(dgv.Columns.Count * 2);
for (int c=0; c<dgv.Columns.Count; c++)
wdth += dgv.Columns[c].Width;
dgv.Width = wdth;
}
}
}
Gebundenes Szenario 2, mit Klassen-Instanzen und Attributen
using System;
using System.Windows.Forms;
using System.Data;
using System.Collections.Generic;
using System.ComponentModel;
namespace WindowsApplication102
{
public partial class Form1 : Form
{
public Form1() { InitializeComponent(); } // Fügen Sie ein DataGridView zur Form hinzu
private void Form1_Load(object sender,EventArgs e)
{
Person[] personen = new Person[]{new Person("Frank",42),
new Person("Eva",34), new Person("Luca",2)};
//Bei generischer Semantik die oberen Zeilen auskommentieren etc.
//List<Person> personen = new List<Person>(new Person[]{new Person("Frank",42),
// new Person("Eva",34), new Person("Luca",2)});
dataGridView1.DataSource = personen; this.Width = 300;
}
public class Person
{
private string name;
private int alter;
private DateTime geburtstag;
public override string ToString()
{
return (name);
}
public Person(string name,int alter)
: this(name,alter,DateTime.Now.AddYears(-alter)) { }
public Person(string name,int alter,DateTime geburtstag)
{
this.Name = name;
this.Alter = alter;
this.geburtstag = geburtstag;
}
[DisplayName("MeinName")] // im DataGridView wird "MeinName" dargestellt
public string Name
{
get { return name; }
set { name = value; }
}
[Browsable(false)] // Eigenschaft wird im DataGridView nicht angezeigt
public int Alter
{
get { return alter; }
set { alter = value; }
}
public DateTime Geburtstag
{
get { return geburtstag; }
set { geburtstag = value; }
}
}
}
}
Ungebunden mit Klassen-Instanzen
(fügen Sie ein DataGridView und einen Button hinzu)

using System;
using System.Windows.Forms;
using System.Data;
using System.Drawing;
namespace DataGvUngeb
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,EventArgs e)
{
dataGridView1.Columns.Add("Person","Person");
dataGridView1.Rows.Add(new Person("Frank",42));
dataGridView1.Rows.Add(new Person("Eva",34));
dataGridView1.Rows.Add(new Person("Luca",2));
}
public class Person
{
private string name;
private int alter;
private DateTime geburtstag;
public override string ToString()
{
return (name);
}
public Person(string name,int alter)
: this(name,alter,DateTime.Now.AddYears(-alter))
{
}
public Person(string name,int alter,DateTime geburtstag)
{
this.Name = name;
this.Alter = alter;
this.geburtstag = geburtstag;
}
public string Name
{
get { return name; }
set { name = value; }
}
public int Alter
{
get { return alter; }
set { alter = value; }
}
public DateTime Geburtstag
{
get { return geburtstag; }
set { geburtstag = value; }
}
}
private void button1_Click(object sender,EventArgs e)
{
MessageBox.Show(((Person)dataGridView1[0,1].Value).Geburtstag.ToShortDateString());
}
}
}