【问题标题】:Refresh WPF Datagrid not bound to observable collection?刷新 WPF Datagrid 未绑定到可观察集合?
【发布时间】:2016-11-08 11:49:12
【问题描述】:

我正在使用带有 Datagrid 的 LINQ to SQL 并将数据绑定到自动生成的字段。通过 LINQ 提交更改时,数据更新正常。 我遇到的问题是直接在数据库上运行 SQL 语句后,我似乎无法刷新更新的数据。数据库数据已正确更新,关闭并重新启动应用程序数据已正确更新。

我试过了,

MyTable.Items.Refresh();

还有

private DatabaseDataContext sql = new DatabaseDataContext(
            Properties.Settings.Default.StaffConnectionString);

sql.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues);

用于将数据绑定到 Datagrid 列的 XAML,Info_Data 是数据库表中自动生成的字段。

<DataGridTemplateColumn Header="Info" Width="*" SortMemberPath="Words">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock FontWeight="Light" Text="{Binding Path=Info_Data, UpdateSourceTrigger=PropertyChanged}" />
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>

从所有的角度来看,我似乎需要创建一个可观察的集合并将数据绑定到该集合并更新集合以刷新数据网格表。 有没有办法解决这个问题?

【问题讨论】:

  • 试试:CollectionViewSource.GetDefaultView(MyTable.ItemsSource)?.Refresh();
  • 感谢@JohanLarsson,这也不起作用。这是相当令人沮丧的。
  • 只需将项目放在 ObservableCollection 中,将其绑定到 XAML 中,然后继续你的生活。通过做错事来惩罚自己,您不会获得任何奖励积分。但是,如果您绝对决定浪费自己的时间,您是否尝试过为集合属性提高 PropertyChanged?还是你连绑定都不行?
  • @EdPlunkett,不知道这是错误的方式,感谢您的建议。这是我的第一个真正的应用程序,所以仍在尝试很多东西,我将不得不重新编写一些代码来将所有内容与ObservableCollection 绑定。不确定我是否遵循您对 collection 属性的意思?
  • 您是如何将项目放入网格中的? “正确”的方法是将集合公开为视图模型的属性,并将其绑定到 XAML 中的 DataGrid.ItemsSource。不过,我有一种感觉,这不是你所做的。顺便说一句,我认为您知道 ObservableCollection 是正确的方法,因为您提到知道它会解决您的所有问题。但是,是的,这不仅仅是 a 方式,而是 方式。

标签: c# sql wpf linq datagrid


【解决方案1】:

您可以尝试使用 SqlDataAdapter 和 DataTable 从数据库加载信息并绑定到 DataGrid:

var da = new SqlDataAdapter("SELECT * FROM " + view, conn);
var dt = new DataTable();
da.Fill(dt);
var dg = new DataGrid();// Your DataGrid
dg.ItemsSource = dt.DefaultView;

更新时:

dt.Rows.Clear();
da.Fill(dt);
dt.AcceptChanges();

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 2017-04-12
    • 2019-03-20
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 2020-12-29
    • 2017-04-18
    相关资源
    最近更新 更多