我有两个gridview控件,如父网格视图,如Order表和子gridview Order_Detail表。两者都绑在一起。如果从Order表中选择了一个订单,则Order_Details表中会显示相应的订单详细信息。问题是我想在Order_Details表中插入一条记录而不会丢失绑定。但是当我尝试插入记录时,它不会影响。数据源没有刷新..代码如下。
我怎样才能做到这一点? Plz帮助我......
public partial class MainWindow : Window
{
DataClasses1DataContext dc = new DataClasses1DataContext();
IBindingList l;
IBindingList p;
public MainWindow()
{
InitializeComponent();
l = dc.Orders.GetNewBindingList();
gridControl1.ItemsSource = l;
}
private void Add_Click(object sender, RoutedEventArgs e)
{
var source = gridControl2.ItemsSource;
System.Data.Linq.EntitySet<Order_Detail> b =
(System.Data.Linq.EntitySet<Order_Detail>)source;
b.Add(new Order_Detail { OrderID=1,ProductID=1});
gridControl2.ItemsSource = b;
gridControl2.RefreshData();//getting error
// dc.SubmitChanges();
}
}
答案 0 :(得分:0)
在WPF中,通常会声明包含您的数据的属性(在您的情况下是您的集合)。然后,您可以将ItemsSource
的{{1}}属性绑定到您的媒体资源,并在ListView
媒体资源中声明GridView
。以下是基于this MSDN page的示例的示例。
ListView.View
使用此设置,您可以将新订单对象添加到Orders集合属性,并且假设您已使用<ListView ItemsSource="{Binding Orders}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Details" DisplayMemberBinding="{Binding Details}" />
<GridViewColumn Header="Price" DisplayMemberBinding="{Binding Price}"/>
</GridView>
</ListView.View>
</ListView>
个集合,ObservableCollection<T>
将在UI中自动更新。