将行添加到DataGrid Silverlight

时间:2011-03-01 03:23:52

标签: c# visual-studio-2010 silverlight-4.0

我有一个显示数据库数据的Datagrid。 每次我从我的数据花瓶中加载数据时,都会收听旧数据并将其替换为新数据。

我想要的是保留前一行,并将新数据附加到数据网格的末尾。

我的代码如下所示:

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;
    }

如何从数据库中追加新数据而不是覆盖数据?

1 个答案:

答案 0 :(得分:0)

一种非常简单且没有多余的方法(因为你似乎没有使用常规的MVVM方法),就是创建一个新列表(IEnumerable),它将旧列表和新列表联合起来,然后将其分配回ItemsSource属性:

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

我把它分成两行,以便更容易理解。 如果您使用的是ViewModel,那么绑定到DataGrid的属性将是List<>,然后您可以对该属性执行AddRange(e.Result),并且由于数据绑定的优点(它会自动显示在您的数据网格中。