我有一个显示数据库数据的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;
}
如何从数据库中追加新数据而不是覆盖数据?
答案 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)
,并且由于数据绑定的优点(它会自动显示在您的数据网格中。