【问题标题】:How to refresh datagrid in WPF如何在 WPF 中刷新数据网格
【发布时间】:2012-07-04 16:45:17
【问题描述】:

我的源在 MySQL 数据库中,我已发出更新命令,现在我需要刷新我的 DataGrid

MySqlCommand cmd = new MySqlCommand(
  "update request set status = " + StatusRequest(value) + 
  " where id = " + rowView[0].ToString() + "", conn);
MySqlDataReader myReader = cmd.ExecuteReader();

如何刷新我的DataGrid

【问题讨论】:

    标签: c# mysql wpf ado.net wpfdatagrid


    【解决方案1】:

    我在这方面遇到了很多麻烦,这就是帮助我用新值重新加载 DataGrid 的原因。确保使用您从中获取数据的数据类型来获取最新的数据值。

    我用下面的SomeDataType 表示。

    DataContext.Refresh(RefreshMode.OverwriteCurrentValues, DataContext.SomeDataType);
    

    希望这可以帮助遇到我遇到同样问题的人。

    【讨论】:

    • 注意:这需要System.Data.Linq在您的参考文献中
    【解决方案2】:

    来自MSDN -

    CollectionViewSource.GetDefaultView(myGrid.ItemsSource).Refresh();
    

    【讨论】:

      【解决方案3】:

      将您的 Datagrid 绑定到 ObservableCollection,然后更新您的集合。

      【讨论】:

      • 正在更新的项目怎么样?它是否处理更新?
      • @Leonardo 为此,您需要您的对象来实现 INotifyPropertyChanged 接口。 msdn.microsoft.com/en-us/library/…
      • 这根本不做任何事情。
      【解决方案4】:

      试试mydatagrid.Items.Refresh()

      【讨论】:

      • 对我不起作用。我正在使用WPF .NET Core 3.1
      【解决方案5】:

      更新后重新加载网格的数据源

      myGrid.ItemsSource = null;
      myGrid.ItemsSource = myDataSource;
      

      【讨论】:

      • 根据我的测试,这似乎比调用 GetDefaultView 快得多,因为其他一些答案建议。
      • 请注意,这会重新触发 DataGrid 中的所有类型的事件(例如 CheckBox Clicked、ComboBox Selected 等),这需要花费大量时间来解决
      【解决方案6】:

      怎么样

      mydatagrid.UpdateLayout();
      

      【讨论】:

      • 不刷新,但是如果我刷新程序源更新,我需要在线时间刷新
      • @NikhilAgrawal 对我不起作用。我正在使用WPF .NET Core 3.1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 2013-02-23
      • 2016-07-06
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多