2014-04-07 40 views
0

Evetything是罰款與此代碼:使用的OnNavigatedTo兩個表 - 的Windows Phone 8

string selectedRowOrderId = ""; 
    if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedRowOrderId)) 
      { 
       int selectedID = int.Parse(selectedRowOrderId); 
       var query = from TblOrders order in orderDB.Orders 
          where order.OrderId == selectedID 
          select order; 

       DataContext = new ObservableCollection<TblOrders>(query)[0]; 
      } 

我能夠在頁面上顯示訂單詳細信息。但是我希望在訂單明細下的同一頁面上顯示訂單產品(來自TblProductsToOrder)。我的意思是,DataContext的必須有來自TblProductsToOrder更多的這樣的查詢:

DataContext = new ObservableCollection<TblProductsToOrder>(query2)[0]; 

你能幫助我如何把這兩個在DataContext的一個同一時間?

+0

可以更好地解釋您的需求? – csharpwinphonexaml

+0

我想你應該給你的代碼的部分名稱,如'headerPanel.DataContext = query.FirstOrDefault();'爲訂單 ' itemsPanel.DataContext = query2.ToList();'爲詳細信息 – csharpwinphonexaml

+0

我有3個表TblO​​rders,TblProducts和TblProductsToOrders)我有一個OrderList。當點擊其中一個時,我可以有OrderDetailsPage。 (訂購日期,客戶名稱等)我希望能夠將產品作爲列表添加到此頁面。但在這種情況下,我的datacontext只有TblOrders的值... – cvdogan

回答

1

如果你不能改變的模式,包括表之間的參考,你有另一種解決問題的方法:在你分配的DataContext

public class OrderDetailsAndProducts 
{ 
    public TblOrders Order { get; set; } 
    public TblProductsToOrder OrderProduct { get; set; } 
} 

你應該做這樣的

OrderDetailsAndProducts orderDetails= 
     new OrderDetailsAndProducts 
     { 
      Order = query.FirstOrDefault(), 
      OrderProduct = query2.FirstOrDefault() 
     }; 
DataContext = orderDetails; 

從我所瞭解的數據庫模式中,您應該在訂單中包含更多的產品,如果它是這樣的類應該更像這樣:

public class OrderDetailsAndProducts 
{ 
    public Order Order { get; set; } 
    public List<TblProductsToOrder> OrderProducts { get; set; } 
} 

提交作業的DataContext你應該做這樣的

OrderDetailsAndProducts orderDetails= 
     new OrderDetailsAndProducts 
     { 
      TblOrders = query.FirstOrDefault(), 
      OrderProducts = query2.ToList() 
     }; 
DataContext = orderDetails; 
+0

明天我會試試這個。非常感謝你的隊友。 – cvdogan

+0

非常感謝你的隊友!有效! – cvdogan

+0

祝你好運發展 – csharpwinphonexaml