如何在你的LightSwitch应用程序中使用选择器作为过滤器
[原文发表地址] How to Use a Picker as a Filter in your LightSwitch apps
[原文发表时间] 2013-08-29 07:17 AM
在过去的几个月中,关于如何做到基于选择器过滤数据的通用模式,我已经得到了不止几个问题。举例来说,我有一个客户表,我想从列表中选择,然后展开他们的详细资料。或者说,我有一个客户列表,我想看到所有的相关订单。
老实说,我以为我已经有一个博客文章是关于如何做到这一点- 但如果连我都不能找到它,那么你可能也无法找到!步骤很简单,你不需要写任何代码,这些步骤在这里...
在同一个表中过滤数据
比方说,我们有一个客户列表,在显示其余字段给用户之前,我们希望有一个屏幕显示,他们应在选择器中选择客户。下面是步骤:
1 - 创建一个查询,通过ID检索客户
在解决方案资源管理器的客户表中,右键单击“添加查询”,在这个例子中,我将它命名为CustomerByID。添加一个过滤器Where ID =,选择“参数”,然后选择“添加新的”去创建一个新的名为ID的查询参数。
需要注意的是,你可以选择参数并且设置这个参数在属性框中是否选择。如果你这样做,那么所有客户的详细资料都将显示在屏幕上。如果遗漏掉了所需的参数项,那么用户必须选择一个客户,去看该客户的详细资料。
2 - 使用查询去创建一个屏幕
无论您使用的是什么样的客户端(Silverlight或HTML)这里的技术是相似的,只是模板不同。在你的客户机节点上单击鼠标右键,并“添加新的屏幕”...
选择CustomerByID作为屏幕数据。如果你正在使用的HTML客户端,那么选择浏览模板。如果使用Silverlight客户端,那么随意挑选像搜索屏幕上的任何列表屏幕。
视图模型中选择CustomerID属性,并在属性窗口中,将其名称更改为客户。请注意您的视图模型会为您自动设置,顾客的属性会设置为一个真正的客户实体并且它的ID会数据绑定到CustomerByID查询的ID参数(如箭头为您指向您在视图模型中选择的Customer.Id项)。像在属性窗口中显示,CustomerByID查询也将会自动执行。这意味着所需的所有参数被输入时,这个查询将会执行,这样的话客户将被选中。
接下来是将客户控件从一个简单的模式选择器变成一个详细的模型选择器 如果你使用Silverlight客户端,那么这些已经被设置到一个自动完成框,但如果你喜欢,你也可以选择一个模态窗口选择器。
3 - 运行吧!
当屏幕出现时,在显示它们的细节之前,用户不得不选择一个客户。
HTML客户端:
Silverlight客户端:
请注意,如果在系统中你有很多的潜在客户,我建议根据字段提供一个过滤器,并允许用户简单键入参数(如姓名,电话等),对于Silverlight客户端,您可以使用模态窗口选取器,而不是提供了一个自动搜索。请参阅:Filtering Lookup Lists with Large Amounts of Data on Data Entry Screens
跨关系过滤数据
要跨关系使用一个过滤器会怎么样呢?举例说,我们从客户到订单有一个一对多的关系,当我们在选择器中选择了一个客户,我们要显示该客户的所有相关订单。技术几乎是完全一样的,只是不同的查询。
1 - 创建一个查询,通过客户ID检索订单
在解决方案资源管理器的Orders表中,右键单击“添加查询”,在这个例子中,我将它命名为OrdersByCustomer。添加一个过滤器where Customer.ID=,选择“参数”,然后选择“添加新的”创建一个新的参数为ID的查询参数。
2 - 使用的查询创建一个屏幕
使用上述相同的步骤添加查询到浏览屏幕,然后在您的视图模型中将OrderId属性的名称更改为客户名。 (LightSwitch中之所以为得到属性名而去选择OrderId的原因是因为我们创建了基于“订单”的查询,并且命名为我们的参数“ID”。如果我们已经把参数命名为CustomerId ,那么然后我们就会在屏幕的浏览模式中看到OrderCustomerId。我离题了......)。
最后在你的内容树中将简要客户控件改成详细的模态选择器。确保你挑出的是外部控件而不是控件内部的内容。)
提示:如果你想在详细模态选择器上显示更多,而不仅仅是简要属性,那么将控件内部内容改为行布局,并选择你想要的字段。
3 - 运行吧!
运行它,并像之前的一样,在查询将执行之前,用户需要选择一个客户。一旦你选择了一个客户,相关的订单会即刻显示。
HTML客户端:
Silverlight 客户端:
总结
关于如何在你的屏幕上使用通用模式选择器去过滤你想要的数据的方法是有一些变化的。有三大关键块,数据模型(容易),查询设计(很容易),屏幕设计(中等)。通用模式下的屏幕设计器一定是有最多的按钮的,并且比所有LightSwitch设计器的按钮都多。 它需要实践和探索,反复尝试,但希望不要太多的痛苦和折磨;-) 我希望我展示给你的是,多么容易去设立这个特定模式。
愿阅读愉快!