gpt4 book ai didi

c# - 更改绑定(bind)到 DataGridView 的 DataTable 中的列顺序不会反射(reflect)在 View 中

转载 作者:太空狗 更新时间:2023-10-29 20:06:42 24 4
gpt4 key购买 nike

当应用程序运行时,DataGridView 绑定(bind)到 DataTable。后来我以编程方式向 DataTable 添加了更多列,它反射(reflect)在基础数据中 - 即列 Ordinals 是它们应该的。然而,这并未反射(reflect)在 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 显示列的序号并显示它们在 中的位置数据表

最佳答案

DataGridView 就是这样工作的;启用自动生成列后,额外的(未映射的)列将附加到末尾。您可以解除绑定(bind)并重新绑定(bind)来修复它;将 DataSource 设置为 null 并返回表:

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

关于c# - 更改绑定(bind)到 DataGridView 的 DataTable 中的列顺序不会反射(reflect)在 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/499321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com