2011-03-01 139 views
1

我有一個Datagrid顯示數據庫中的數據。 每次我從我的數據花瓶中加載數據時,舊數據會被接收,並且會被新數據替換。將行添加到DataGrid Silverlight

我想要的是保留上一行並將新數據添加到數據網格的末尾。

我的代碼如下所示:

public MainPage() 
    { 


     InitializeComponent(); 
     dataGrid1.Columns.Add(new DataGridTextColumn { Header = "Year", Binding = new System.Windows.Data.Binding("year") }); 
     dataGrid1.Columns.Add(new DataGridTextColumn { Header = "One", Binding = new System.Windows.Data.Binding("One") }); 
     dataGrid1.Columns.Add(new DataGridTextColumn { Header = "Two", Binding = new System.Windows.Data.Binding("Two") }); 
     dataGrid1.Columns.Add(new DataGridTextColumn { Header = "Three", Binding = new System.Windows.Data.Binding("Three") }); 


    } 

void client_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e) 
    {    
     dataGrid1.ItemsSource = e.Result; 
    } 

如何從數據庫中追加新的數據,而不是覆蓋數據? 。

回答

0

一個非常簡單且沒有多餘的方法來做到這一點(因爲你似乎沒有使用常規的MVVM方法),是創建一個新列表(IEnumerable),它將舊列表和新列表,然後將其重新分配給ItemsSource屬性:

List<MyObjects> abc = new List<MyObjects>(dataGrid2.ItemsSource).Union(e.Result); 
dataGrid2.ItemsSource = abc; 

我已將其分解爲兩行以便於理解。 如果您使用的是ViewModel,那麼綁定到DataGrid的屬性將是List<>,然後您可以對該屬性執行AddRange(e.Result),並且由於數據綁定(並通知)的美妙,它會自動顯示在你的數據網格中。