c# - tamaño - Cambiar el orden de las columnas en DataTable vinculado a DataGridView no se refleja en la vista
obtener nombre de columna datagridview c# (3)
Cuando se ejecuta la aplicación, DataGridView
está vinculada a una DataTable
. Más tarde agrego más columnas a DataTable
programmatically y se refleja en los datos subyacentes, es decir, los Ordinales de columna son como deberían ser. Sin embargo, esto no se refleja en DataGridView
. En su lugar, las columnas se agregan al conjunto generado originalmente.
Este ejemplo demuestra,
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);
}
}
}
El botón 1 genera las columnas, el botón 2 agrega una columna y establece el ordinal en 0, por lo que debe ser el primero en la grilla, el botón 3 muestra los ordinales de las columnas y muestra que son como deberían ser en la DataTable
.
Así es como funciona DataGridView
; con columnas autogeneradas habilitadas, se agregan columnas adicionales (no asignadas) al final. Puede desvincular y volver a vincular para solucionarlo; establecer DataSource en nulo y volver a la tabla:
this.dataGridView1.DataSource = null;
this.dataGridView1.Columns.Clear();
this.dataGridView1.DataSource = data;
Tuve un problema similar y lo resolví con la propiedad DataGridViewColumn.DisplayIndex.
dgvData.Columns["COLUMN_NAME"].DisplayIndex = 0; // will move your custom column to first position
No te olvides de activar y desactivar AutoColumnCreate para asegurarte de que eres el trabajo de DisplatIndex.
http://www.internetworkconsulting.net/content/datadridview-displayorder-not-working