开关查询/子查询/下拉选择列表

本文关键字:查询 选择 列表 开关 | 更新日期: 2023-09-27 18:13:10

我正在使用c#在VS2013中开发LightSwitch HTML应用程序。我有一个主屏幕,允许用户选择一个网站,他们被授权使用。它将这个站点id传递给搜索屏幕,我想用一堆搜索选项来填充搜索屏幕,以搜索资产。

在数据库中,我有3个表使用SQL Server:

Site (Id, ShortName, LongName, Description)
Unit (Id, Code, Description)
SiteUnit (Id, SiteId, UnitId)

为有效的组合。

由于我在传递SiteId,我想向用户展示(除其他事项外)他们可以从(Code字段从单位)中搜索的有效单位的下拉列表

我已经尝试了很多方法来实现这个目标,但是到目前为止都没有结果。

我已经将数据项(查询)添加到SiteUnit表的页面上,参数为SiteId,这将返回适当的记录。

现在我想用它来过滤Unit表,以显示适当的选择。

所有合适的外键都被添加了,但是我就是不明白。

开关查询/子查询/下拉选择列表

我对LightSwitch只有基本的了解。您不能像在SQL中那样直接使用SQL代码或执行多个表连接。但是,如果您可以访问数据库,则可以创建视图,然后像查询表一样查询该视图。下面的代码将创建一个视图,列出每个站点的每个单元。在SiteID上调用带有过滤器的视图将为该站点提供单元。

Create View v_UnitsBySiteID as
    SELECT Id, Code, Description 
    FROM Unit u
    INNER JOIN SiteUnit su
    ON u.ID = su.UnitID

根据需要更改返回的内容。这有帮助吗?

您需要使用参数对Unit表添加另一个过滤器查询,就像您对SiteUnit表所做的那样。然后需要将新参数设置为适当的UnitId。这可以通过多种方式实现。

最简单的方法是将参数绑定直接设置为SiteUnitQuery.SelectedItem.UnitId。但是,如果您需要在UnitQuery执行时进行其他处理,则可以在SiteUnitQuery_SelectionChanged()方法中手动设置新参数,或者通过某种按钮设置新参数。