2011-11-03 96 views
-3

我有两个gridview控件,如父级gridview像Order table和child gridview Order_Detail Table。两者都结合在一起。如果从订单表中选择了一个订单,相应的订单详细信息显示在Order_Details表中。问题是我想插入一个记录到Order_Details表而不会丢失绑定。但是当我试图插入记录时,它不影响。数据源不刷新。代码如下。在WPF中使用LINQ绑定父级表格和子表格

我该如何做到这一点? 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

什么是错误? –

+2

@Ranjith:在StackOverflow中,你最好不要'丢'一个问题,然后离开让自己回答。在那里回应评论和答案,否则人们很快就会失去兴趣。 –

回答

0

在WPF中,习惯上声明包含您的数据的属性,在您的情况下,您的集合。然后,您会将ListViewItemsSource财产绑定到您的财产,并在ListView.View财产内声明您的GridView。以下是一个基于this MSDN page示例的示例。

<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>收藏,GridView会自动在UI更新。