2011-03-01 165 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),并且由于数据绑定(并通知)的美妙,它会自动显示在你的数据网格中。