在本地查询中使用PreprocessQuery方法

时间:2013-09-04 20:50:34

标签: visual-studio-lightswitch

我有一个主/细节关系,如下图所示

enter image description here

我需要过滤OrderHeaders表中显示的数据,因此我编辑了本地查询(通过单击屏幕中的编辑查询链接),但部分过滤器基于< strong>计算属性所以我需要使用 PreprocessQuery 方法,因为计算属性不会出现在查询的“过滤器”部分中。

但是现在我遇到了一个问题,在本地查询中,“编写代码”ComboBox不像全局查询那样可用,如下图所示

enter image description here

所以我不知道如何在本地查询中创建PreprocessQuery方法。

有人可以告诉我如何创建它吗?

如果本地查询不可用,是否有另一种方法可以按计算属性进行过滤?

1 个答案:

答案 0 :(得分:2)

好的,首先从表中创建子查询。右键单击表格和“添加查询”,例如ProductsWithouDescriptionSortedProducts。 (国家应该相当于你的“标题”表)

enter image description here

为查询命名,然后将参数添加到您需要的任何类型的查询中。

enter image description here

现在为它写一些代码:(这里的国家是我正在使用的表)

enter image description here

enter image description here

请注意,NewParameter现在是您方法的“参数”。这将过滤此查询以仅显示CountryName等于参数的记录。您可以根据需要添加任意数量的参数。

现在将该数据项添加到您的屏幕。

enter image description here

然后添加所需类型的新属性。(在“添加数据项”下)

我建议你取消选中是必需的

enter image description here

这是我的屏幕的基本查询布局。我使用表位置作为示例,因为每个位置在我的数据模型中都有一个国家/地区。位置应该等同于Customer表。如果我展开 locations (您的客户)表,我会注意到我无法直接添加新创建的查询。另请注意,现在显示已创建的属性。

enter image description here

如果您在左侧展开新查询,则会在底部看到参数。

enter image description here

单击它,转到其属性(F4)并将参数映射到新创建的属性。

enter image description here

现在,您的过滤参数由我们刚刚创建的属性设置。

现在您必须在该查询可以显示任何内容之前设置该属性。继承人如何做到这一点:

选择您的客户(我的位置)表,并在左上角单击编写代码旁边的向下箭头,然后选择`SelectionChanged'方法:

enter image description here

现在写一些代码:

enter image description here

这里我的显示字符串是Locations的计算字段。因此,每当您在位置网格中选择某些内容时,它将使用“DisplayString”来过滤“MynewFavoriteQuery”。

有些注意事项:

您为子查询设置参数可选只要属性为 NULL ,查询就会显示所有内容而不进行过滤。 (实际上我不确定这个,因为我使用它有点不同,但你可以玩它,看看你得到了什么)

enter image description here

如果将属性设置为必需,如果属性设置为null,则会在屏幕上导致验证错误。

您可能还需要对此进行微调,因为在创建屏幕时,属性始终初始化为null。您可以在编写代码中编辑“ScreeCreated”方法,以便在首次生成屏幕时为该属性设置一些值。

如果您有任何疑问,请与我们联系。