2009-01-31 11 views
7

Cuando se ejecuta la aplicación, el DataGridView está unido a un DataTable. Más tarde agrego más columnas al DataTable programáticamente y se refleja en los datos subyacentes, es decir, los Ordinales de la columna son como deberían ser. Sin embargo, esto no se refleja en el DataGridView. En su lugar, las columnas se agregan al conjunto generado originalmente.Cambio de orden de las columnas de DataTable con destino a DataGridView no refleja en la vista

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); 
     } 
    } 
} 

Botón 1 genera las columnas, el botón 2 añade una columna y establece el ordinal a 0 lo que debe ser primero en la cuadrícula, el botón 3 muestra los ordinales de las columnas y muestra que son como deberían ser en el DataTable.

Respuesta

9

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 el origen de datos en nulo y de nuevo a la mesa:

this.dataGridView1.DataSource = null; 
this.dataGridView1.Columns.Clear(); 
this.dataGridView1.DataSource = data; 
1

que tenía un problema similar y lo resolvió con la propiedad DataGridViewColumn.DisplayIndex.

dgvData.Columns["COLUMN_NAME"].DisplayIndex = 0; // will move your custom column to first position 
Cuestiones relacionadas