2016-07-06 220 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(); 
相關問題