代码之家  ›  专栏  ›  技术社区  ›  Brendan

更改绑定到DataGridView的DataTable中的列顺序不会反映在视图中

  •  7
  • Brendan  · 技术社区  · 17 年前

    DataGridView 一定会有 DataTable . 稍后,我将更多列添加到 数据表 数据表格控件 . 而是将列附加到最初生成的集合上。

    这个例子说明,,

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

    数据表 .

    3 回复  |  直到 13 年前
        1
  •  10
  •   Marc Gravell    17 年前

    就是这样 DataGridView 作品启用“自动生成列”后,会将额外(未映射)列追加到末尾。您可以解除绑定并重新绑定以修复它;将数据源设置为null并返回到表:

    this.dataGridView1.DataSource = null;
    this.dataGridView1.Columns.Clear();
    this.dataGridView1.DataSource = data;
    
        2
  •  2
  •   Koryu    13 年前

    我遇到了一个类似的问题,并使用DataGridViewColumn.DisplayIndex属性解决了这个问题。

    dgvData.Columns["COLUMN_NAME"].DisplayIndex = 0;  // will move your custom column to first position
    
    推荐文章