![](/img/trans.png)
[英]WPF DataGrid auto-refresh with ObservableCollection source
[英]WPF Datagrid- auto refresh
我有一個datagrid,顯示一個綁定到SQL Server DB的表。 我想每隔60秒設置一個Timer,檢查任何更新,然后顯示最新的更新數據。
到目前為止,我已經為datagrid創建了一個event_handler,它包含了對象調度程序計時器
private void dataGrid1_loaded(object sender, RoutedEventArgs e)
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 60);
dispatcherTimer.Start();
}
現在我不知道如何繼續使用事件處理程序來處理數據庫中新更新的數據。
dispatcherTimer_Tick
這是我用於填充數據網格的select語句。
private void Page_Loaded(object sender, RoutedEventArgs e)
{
try
{
String selectstatement = "select top 2 ItemID, ItemName,ConsumerName, Street, DOJ from ConsumarTB order by ItemID ";
da = new SqlDataAdapter(selectstatement, con);
ds = new DataSet();
da.Fill(ds);
dataGrid1.ItemsSource = ds.Tables[0].DefaultView;
}
catch (SqlException e)
{
Console.WriteLine(e.Message);
}
}
有很多方法可以改善你的上述內容。 但這是我會為初學者嘗試的。
下面將在頁面加載時填充您的數據網格,將計時器設置為每60秒打勾一次。 當計時器滴答時,它將調用一種方法將數據再次加載到網格中。
//On PageLoad, populate the grid, and set a timer to repeat ever 60 seconds
private void Page_Loaded(object sender, RoutedEventArgs e)
{
try
{
RebindData();
SetTimer();
}
catch (SqlException e)
{
Console.WriteLine(e.Message);
}
}
//Refreshes grid data on timer tick
protected void dispatcherTimer_Tick(object sender, EventArgs e)
{
RebindData();
}
//Get data and bind to the grid
private void RebindData()
{
String selectstatement = "select top 2 ItemID, ItemName,ConsumerName, Street, DOJ from ConsumarTB order by ItemID ";
da = new SqlDataAdapter(selectstatement, con);
ds = new DataSet();
da.Fill(ds);
dataGrid1.ItemsSource = ds.Tables[0].DefaultView;
}
//Set and start the timer
private void SetTimer()
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 60);
dispatcherTimer.Start();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.