我现在正在C#项目中工作,这很简单。如何在C#中每分钟更新一次datagridview
我有一个状态框,两个按钮和一个dataGridView。
当表单加载dataGridView被正确填充。
我想要做的是每45秒更新一次表,以反映数据库中的任何更改。
我正在寻找一种技术的建议,以实现这一点。我一直在寻找明确的信息,但似乎有点欠缺。
我现在正在C#项目中工作,这很简单。如何在C#中每分钟更新一次datagridview
我有一个状态框,两个按钮和一个dataGridView。
当表单加载dataGridView被正确填充。
我想要做的是每45秒更新一次表,以反映数据库中的任何更改。
我正在寻找一种技术的建议,以实现这一点。我一直在寻找明确的信息,但似乎有点欠缺。
Timer
控件添加到您的窗体。 (这是在组件类)Interval
属性45000
(该值表示毫秒)Enabled
属性设置为True
,或其他地方。Tick
事件的处理程序Tick
处理器(您可以通过双击该计时器得到这个),更新dataGridView
你的处理程序将看起来像这样:
private void timer1_Tick(object sender, EventArgs e)
{
// Update DataGridView
}
如果您由于某种原因需要暂停更新,您可以拨打timer1.Stop()
停止计时器运行,并使用timer1.Start()
重新启动计时器。
使用计时器控件,然后以您需要的特定增量执行更新。
您可以创建一个,每隔45秒触发一次,并从其事件处理程序更新UI。
与其他人一样,建议使用Timer来重新查询数据库。我唯一想补充的是,当你重新查询数据库时,不要将DataGridView的数据源设置为新表。而是将其与现有表格合并。原因是因为如果用户位于网格中间,例如查看特定行,如果将DataSource重置为新表,则整个网格将刷新并且它们将丢失它们的位置。讨厌地狱!如果你合并它虽然,它将无缝的用户。
的一件事时,使用合并的方法是,该表需要有一个主键要注意。仔细检查以确保DataTable本身具有主键。并不总是将它从数据库中拉回来。你可能需要做一些事情,如:
table.PrimaryKey = new DataColumn[] {table.Columns["ID"]};
@BFree:这是一个很棒的提示。这是否也可以转换为ASP.NET中的GridView? – TheTXI 2009-03-02 21:09:38
你是说我应该在Timer事件处理程序中再次绑定datagridview?
注意:定时器控件的增量可以在属性中设置。然后,如果您双击控件,则可以访问您需要的特定事件处理程序。 – TheTXI 2009-03-02 20:58:02