0

我在 Lightswitch 2012 中有一个使用 C# 的项目,其中包含下表:

客户

  • ID - 整数
  • CaseID - 长整数
  • 全名 - 字符串
  • 地址 - 字符串
  • 跟踪 - TrackingItem 集合

职员

  • ID - 整数
  • PIN - 整数
  • 全名 - 字符串
  • 跟踪 - TrackingItem 集合

追踪

  • ID - 整数
  • 客户 - 客户
  • 员工 - StaffItem
  • 开始日期 - 日期
  • 开始时间 - 日期时间
  • 结束时间 - 日期时间
  • 单位 - 双倍(计算字段)
  • TogetherTime - 布尔值

关系如下: 每个跟踪对象必须至少有一个Client和至少一个Staff,每个Client和Staff可以有多个Tracking对象。我目前有一个名为 TrackingFilter 的查询,它允许用户在名为 SearchTrackingFilter 的搜索屏幕上按客户姓名、员工姓名、日期范围以及该项目是否标记为一起时间来过滤 Tracking 表。这还会在结果表中显示计算字段“单位”。我要做的是在结果表上方的屏幕上添加一个文本字段,该字段显示查询返回的单位总数以及用户选择的任何条件。我有点卡在这一点上,不知道该怎么办。我可以在屏幕上添加标签等,但我不能 t 似乎编辑任何类型的代码或任何可以让我将查询返回的单位总数相加的东西。任何帮助,将不胜感激。

4

1 回答 1

0

我有同样的要求。您可以访问 DataWorkspace 并向其this.DataWorkspace.ApplicationData添加过滤器参数。

例如:

IDataServiceQueryable<Invoice> queryInvoiceTotal = this.DataWorkspace.ApplicationData.Invoices;
if (drdCustomer != null)
    queryInvoiceTotal = queryInvoiceTotal.Where(q => q.Customer.Id == this.drdCustomer.Id);
if (InvoiceState != null)
    queryInvoiceTotal = queryInvoiceTotal.Where(q => q.InvoiceState == InvoiceState);
if (InvoiceDateStart != null)
    queryInvoiceTotal = queryInvoiceTotal.Where(q => q.Date >= InvoiceDateStart);
if (InvoiceDateEnd != null)
    queryInvoiceTotal = queryInvoiceTotal.Where(q => q.Date <= InvoiceDateEnd);
var data = queryInvoiceTotal.Execute();
decimal? totalNetto = data.Sum(q => q.SumNetto);

您还可以在屏幕中访问所谓的 VisualCollection 查询,但请注意,这只会汇总当前在屏幕/网格中可见的数据。因此,例如,如果您每页仅显示 45 个项目,它只会汇总这 45 个项目。

于 2013-07-25T14:33:21.230 回答