tiempo tamaño ocultar obtener nombre ejemplos ejecucion datos columnas columna cambiar agregar c# .net winforms datagridview datatable

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