【问题标题】:Using OnNavigatedTo for two table - Windows Phone 8对两个表使用 OnNavigatedTo - Windows Phone 8
【发布时间】:2014-04-07 15:05:24
【问题描述】:

Evetything 对这段代码很好:

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 中同时拥有这两个吗?

【问题讨论】:

  • 您能更好地解释您的需求吗?
  • 我认为您应该为部分代码命名,例如 headerPanel.DataContext=query.FirstOrDefault(); 用于订单 itemsPanel.DataContext=query2.ToList(); 以获取详细信息
  • 我有 3 个表(TblOrders、TblProducts 和 TblProductsToOrders)并且我有一个 OrderList。当点击其中之一时,我可以拥有 OrderDetailsPage。 (订单日期、客户名称等)我希望能够将产品作为列表添加到此页面。但在这种情况下,我的数据上下文只有 TblOrders 值...
  • 您可以扩展您的 Orders 类以包含一个产品列表,只有在需要时才会填充它们。
  • 可能有比我尝试的方法更好的方法 :) 但我唯一的问题是将 2 个查询放入 DataContext 并使用这个新的 DataContext 绑定 XAML 端。

标签: c# windows-phone-8 datacontext


【解决方案1】:

如果您无法更改模型以包含表之间的引用,那么您还有另一个解决问题的方法:

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

在您分配给 DataContext 时,您应该这样做

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;

【讨论】:

  • 我明天试试这个。非常感谢你的朋友。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多