加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 更改绑定到DataGridView的DataTable中的列顺序不会反映在

发布时间:2020-12-15 07:54:38 所属栏目:百科 来源:网络整理
导读:运行应用程序时,DataGridView绑定到DataTable.稍后我以编程方式向DataTable添加更多列,并将其反映在基础数据中 – 即,“正常”列应该是它们应该是的.但是,这不会反映在DataGridView中.而是将列附加到最初生成的集合上. 这个例子证明, public partial class F
运行应用程序时,DataGridView绑定到DataTable.稍后我以编程方式向DataTable添加更多列,并将其反映在基础数据中 – 即,“正常”列应该是它们应该是的.但是,这不会反映在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中的方式.

解决方法

这就是DataGridView的工作原理;启用自动生成列后,将额外(未映射)列附加到末尾.您可以取消绑定并重新绑定以修复它;将DataSource设置为null并返回到表:
this.dataGridView1.DataSource = null;
this.dataGridView1.Columns.Clear();
this.dataGridView1.DataSource = data;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读