2011-11-03 98 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更新。