私はDataGrid
をC#WPF
に入れました。これはEmployees
で埋められています。基本的に私はDatabase
から定期的に読む必要があります。Employees
がフィールドに入ると、フィールドが変更されます。私はこのような状況に近づく最善の方法についていくつかの問題を抱えています。まず、これは私がDataGrid
を定義する方法です。DataGridを定期的にリフレッシュするC#WPF
public ICollectionView FilteredView { get; set; }
public ObservableCollection<EmployeeModel> Employees {get; set; }
private void OnPageLoad(object sender, RoutedEventArgs e)
{
var _employeeDataService = new EmployeeDataService();
Employees = _employeeDataService.HandleEmployeeSelect();
FilteredView = CollectionViewSource.GetDefaultView(Employees);
dataGrid.ItemsSource = FilteredView;
DataContext = this;
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(TimerTick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
}
テーブル全体をデータベースと適切なフィールド(ユーザが建物内にあるか否かが更新される)から検索されるように、本質的に、現在、毎秒を発射TimerTick
方法は単に、再度このメソッドを呼び出します。
私が言ったように、この方法にはいくつかの問題があります。まず、それは良く見えません。 DataGrid
が常にリフレッシュされるため、ユーザーがグリッド上で実行するアクションは遅く、各行の強調表示が歪んで表示されます。
第2に、DataGrid
をフィルタリングする方法を使用します。ユーザーはEmployee
の名前を入力でき、それに応じてDataGrid
がフィルタリングされます。もう一度DataGrid
が1秒ごとに更新されるため、DataGrid
でフィルタリングすることは文字通り不可能です。ユーザータイプがすべて毎秒元に戻されるからです。
DataGrid
は、1分ごとに改善される可能性があると私は理解していますが、理想的なところではまだいいですし、良い解決策があると確信しています。 DataGrid
の更新が、ユーザーにとってより微妙で不明なので、このソリューションを改善するにはどうすればよいですか?
質問:なぜDataGridを頻繁に更新する必要がありますか? そして、毎秒プロパティの更新や、ビューのdatacontextの再設定はしていますか? –
私はデータベースからすべてのデータを取得できないということを提案します。まず、データベース内で変更があったかどうかを確認します。その関数がデータベースからデータをフェッチするだけである場合はtrueです。 (データを取得するスレッドを使用) –
@ VivekSaurav基本的に、従業員が建物に出入りする際の監視システムです。現時点では、私はdatacontextをリセットしていますが、その目的は避けることだと思います。 – CBreeze