Quando l'applicazione viene eseguita, lo DataGridView
è associato a un DataTable
. Successivamente aggiungo più colonne allo DataTable
a livello di codice e si riflettono nei dati sottostanti, cioè gli ordinali della colonna sono come dovrebbero essere. Tuttavia ciò non si riflette nello DataGridView
. Invece le colonne sono aggiunte al set originariamente generato.Modifica dell'ordine delle colonne in DataTable associato a DataGridView non riflette nella vista
Questo esempio dimostra,
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);
}
}
}
Pulsante 1 genera le colonne, pulsante 2 aggiunge una colonna e imposta l'ordinale 0 quindi dovrebbe essere in prima griglia, pulsante 3 visualizza gli ordinali delle colonne e mostra come dovrebbero essere nel DataTable
.
Correggi il collegamento –