Wenn die Anwendung ausgeführt wird, wird die DataGridView
ist gebunden an eine DataTable
. Später füge ich weitere Spalten in die DataTable
programmgesteuert und wird in den zugrunde liegenden Daten widergespiegelt - d.h. die Spalten-Ordinale sind so, wie sie sein sollten. Dies spiegelt sich jedoch nicht in der DataGridView
. Stattdessen werden Spalten an die ursprünglich erzeugte Menge angehängt.
Dieses Beispiel zeigt es,
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public DataTable data = new DataTable();
private void button1_Click(object sender, EventArgs e)
{
this.dataGridView1.DataSource = data;
for (int i = 0; i < 5; i++)
{
this.data.Columns.Add(i.ToString());
}
}
private void button2_Click(object sender, EventArgs e)
{
DataColumn foo = new DataColumn();
this.data.Columns.Add(foo);
foo.SetOrdinal(0);
}
private void button3_Click(object sender, EventArgs e)
{
foreach (DataColumn tmpCol in this.data.Columns)
{
Console.WriteLine("{0} : {1}", tmpCol.ColumnName, tmpCol.Ordinal);
}
}
}
Schaltfläche 1 erzeugt die Spalten, Schaltfläche 2 fügt eine Spalte hinzu und setzt die Ordnungszahl auf 0, so dass sie an erster Stelle im Raster steht, Schaltfläche 3 zeigt die Ordnungszahlen der Spalten an und zeigt, dass sie so sind, wie sie im Raster stehen sollten DataTable
.