按下按钮后会发生什么:
dataGridView1.DataSource = ConnectandReadList(some_query);
dataGridView1.Refresh();
请注意我正在使用另一个名为chart1
的控件执行此操作,并且它可以正常使用它,它会使用新的重新获取的数据填充它,但datagridview
只是保持不变
第一次尝试成功。
然而,第二次按它,它显示相同的东西!
任何人都知道我是否正确刷新了datagridview?
答案 0 :(得分:10)
这里与@Fake有细微差别,但调用Refresh()
不能仅在dataGridView上调用它
“强制控件使其客户区无效,并立即重绘自身和任何子控件。”
由于此方法涉及任何控制,而不涉及刷新与对象相关的数据。请参阅here (DataGridView Methods)并向下滚动到“刷新”,您将看到指向Control.Refresh Method
的链接点你想要这样的东西;
BindingSource bs = new BindingSource();
bs.DataSource = ConnectandReadList(some_query);
dataGridView1.DataSource = bs;
bs.ResetBindings(false)
然后您就可以在ResetBindings()
上致电bs
(您的BindingSource
);
BindingSource bs = new BindingSource();
private refreshData()
{
bs.ResetBindings(false)
}
答案 1 :(得分:1)
DataGridView在您第一次分配DataSource时设置绑定。问题是,如果分配与初始分配的结构不同,后续的DataSource分配将失败,因为绑定现在是“关闭”
您需要重置DataGridView thusly,以便绑定新数据。 (该链接适用于VB,但您只需要知道要调用的方法。即使复制/粘贴也会过度。)
答案 2 :(得分:1)
试试这个吗?
dataGridView1.DataSource = null;
dataGridView1.DataSource = ConnectandReadList(some_query);
dataGridView1.Refresh();
答案 3 :(得分:1)
这行代码将数据加载到wMP_EXPORTDataSet.DEST_AX_PRICEDISCADMTRANSENTITY
表中。您可以根据需要移动或删除它。
this.dEST_AX_PRICEDISCADMTRANSENTITYTableAdapter.Fill(this.wMP_EXPORTDataSet.DEST_AX_PRICEDISCADMTRANSENTITY);
答案 4 :(得分:1)
在将List <>设置为数据源时将其绑定到List <>时可以做的小技巧,像这样在末尾添加ToList():
dataGridView1.DataSource = ConnectandReadList(some_query).ToList();
由于某种原因,这导致刷新而不丢失任何引用或任何内容。
一种替代方法是直接通知DataGridView其数据已更改,如下所示:
dataGridView1.DataSource = ConnectandReadList(some_query)
var m = dataGridView1.GetType().GetMethod("OnDataSourceChanged", BindingFlags.NonPublic | BindingFlags.Instance);
m.Invoke(dataGridView1, new object[] { EventArgs.Empty });
答案 5 :(得分:0)
您是否尝试在EndEdit()
之前致电Refresh()
?
答案 6 :(得分:0)
你可以像@cycl建议那样做,你也可以使用一个BindingSource,我相信这是微软推荐的方法。
BindingSource bs = new BindingSource();
bs.DataSource = ConnectandReadList(some_query);
dataGridView1.DataSource = bs;
dataGridView1.Refresh;
答案 7 :(得分:0)
实际上问题在于您的TableAdapter没有刷新。 我在编辑表(mydatabase.tbl)后使用此代码来刷新它:
tblTableAdapter.Fill(mydatabaseDataSet.tbl);
dataGridView1.DataSource = tblBindingSource;
dataGridView1.Update();
答案 8 :(得分:-1)
您是第一次在if(!Page.IsPostback)
可能正在重置每个回发上的数据源。