При запуске приложения DataGridView
привязывается к DataTable
. Позже я добавлю больше столбцов к DataTable
программным способом, и это отразится на базовых данных - то есть столбцы Ordinals такие, какими они должны быть. Однако это не отражено в DataGridView
. Вместо этого столбцы добавляются в первоначально сгенерированный набор.
Этот пример демонстрирует,
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);
}
}
}
Кнопка 1 генерирует столбцы, кнопка 2 добавляет столбец и устанавливает порядковый номер 0, поэтому он должен быть первым в сетке, кнопка 3 отображает порядковые номера столбцов и показывает, какими они должны быть в DataTable
.