这听起来不对。为了测试它,我编写了一个简单的应用程序,它创建了一个 DataTable 并向其中添加了一些数据。
在button1.Click
它将表绑定到 DataGridView。
然后,我添加了第二个按钮,当单击该按钮时,会将另一列添加到基础 DataTable。
当我测试它并单击第二个按钮时,网格立即反映了更新。
为了测试反向,我添加了第三个按钮,它会弹出一个对话框,其中包含绑定到同一个 DataTable 的 DataGridView。然后,在运行时,我向第一个 DataGridView 添加了一些值,当我单击按钮调出对话框时,这些更改就会反映出来。
我的观点是,他们应该保持并发。AutoGenerateColumns
当他建议您检查是否设置为时,马克可能是对的true
。不过,您不需要调用 DataBind,这仅适用于 Web 上的 DataGridView。也许您可以发布您正在做的事情,因为这应该有效。
我如何测试它:
DataTable table = new DataTable();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
table.Columns.Add("Name");
table.Columns.Add("Age", typeof(int));
table.Rows.Add("Alex", 26);
table.Rows.Add("Jim", 36);
table.Rows.Add("Bob", 34);
table.Rows.Add("Mike", 47);
table.Rows.Add("Joe", 61);
this.dataGridView1.DataSource = table;
}
private void button2_Click(object sender, EventArgs e)
{
table.Columns.Add("Height", typeof(int));
foreach (DataRow row in table.Rows)
{
row["Height"] = 100;
}
}
private void button3_Click(object sender, EventArgs e)
{
GridViewer g = new GridViewer { DataSource = table };
g.ShowDialog();
}
public partial class GridViewer : Form //just has a DataGridView on it
{
public GridViewer()
{
InitializeComponent();
}
public object DataSource
{
get { return this.dataGridView1.DataSource; }
set { this.dataGridView1.DataSource = value; }
}
}