2016-07-06 78 views
1

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

我曾尝试,

MyTable.Items.Refresh(); 

而且

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

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

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

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

通过似乎我需要创建一个观察的集合和数据绑定到和更新集合刷新数据网格表中的所有账户。 有没有办法解决这个问题?

+0

尝试:'CollectionViewSource.GetDefaultView(MyTable.ItemsSource)?刷新();' –

+0

谢谢@JohanLarsson,那也不行。相当令人沮丧的是。 – KyloRen

+0

只需将项目放入ObservableCollection中,将其绑定到XAML中,然后继续使用您的生活。你没有得到任何奖励积分来惩罚你自己做错事。但是,如果你绝对有决心浪费你自己的时间,你有没有尝试提高PropertyChanged的集合属性?或者你甚至没有约束它? –

回答

1

你可以尝试的SqlDataAdapter和DataTable从数据库中加载信息,并绑定到数据网格:

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();