在Lightswitch 2012中添加一个对查询结果求和的属性

时间:2013-07-08 23:02:08

标签: c# calculated-field lightswitch-2012

我在Lightswitch 2012中使用C#的项目包含以下表格:

客户

  • Id - 整数
  • CaseID - Long Integer
  • FullName - String
  • 地址 - 字符串
  • 跟踪 - TrackingItem Collection

员工

  • Id - 整数
  • PIN - 整数
  • FullName - String
  • 跟踪 - TrackingItem Collection

跟踪

  • Id - 整数
  • 客户 - 客户
  • 员工 - StaffItem
  • StartDate - 日期
  • StartTime - DateTime
  • EndTime - DateTime
  • 单位 - 双倍(计算字段)
  • TogetherTime - 布尔

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

1 个答案:

答案 0 :(得分:0)

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

例如:

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个项目。