Lightswitch查询/子查询/下拉选项列表

时间:2014-07-16 16:05:17

标签: c# visual-studio-lightswitch

我正在使用C#在VS2013中使用LightSwitch HTML应用程序。我有一个主屏幕,允许用户选择他们有权使用的网站。它将此站点ID传递到搜索屏幕,我想在搜索屏幕上填充一堆搜索选项以搜索资产。

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

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

有效组合。

由于我正在传递SiteId我想向用户(除其他外)提供他们可以搜索的有效单位的下拉(来自单位的Code字段)

我试图以多种方式实现这一目标,但到目前为止它还没有实现。

我已将dataitem(查询)添加到SiteUnit表中的页面,其参数为SiteId,并返回相应的记录。

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

添加了所有相应的外键,但我无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

我对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

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

答案 1 :(得分:0)

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

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