在lightswitch中为自定义搜索屏幕添加自定义计算字段

时间:2012-04-09 03:18:53

标签: visual-studio-lightswitch calculated-field

所以我有这个应用程序,我必须创建一个简单的搜索屏幕基于查询(此查询获取指定搜索条件的所有财务交易)

所以我想要的是在屏幕上添加一个计算字段,显示搜索结果的总和。 不是所有记录的总和。

我试图在金融交易表上添加一个计算字段,但它没有任何意义..

在这种情况下我该怎么办?

提前感谢。

此致

1 个答案:

答案 0 :(得分:1)

我假设您的意思是搜索,用户在搜索屏幕上的默认搜索框中输入他们的条件。请记住,内置搜索实际上不是对数据库的搜索,而是对您已检索的查询的过滤器。因此,当用户“搜索”某些内容时,他实际上是从屏幕中过滤出行,但仍然是绑定到网格的基础数据集合。
我不知道有任何拦截内置搜索框行为的方法。

实现我认为你想要的东西的一种方法是创建一个查询并根据所需的搜索条件对其进行参数化,并在其周围构建一个搜索屏幕。您可以隐藏默认搜索框以使其更清晰。

例如,假设我有一个带有小时字段的Projects表。首先,我基于Projects创建一个查询,我在其中添加了一个像“Name contains NameParam”这样的过滤器。在屏幕上显示该参数(使用本文作为指南:http://blogs.msdn.com/b/bethmassi/archive/2010/11/09/creating-a-custom-search-screen-in-visual-studio-lightswitch.aspx
现在我将使用一个技巧,这是我见过的一种技术,我对它不是很满意,是基于到目前为止,文本框的Changed事件绑定到查询参数的事实在执行屏幕查询后发生,但它适用于当前版本的LS。 在设计器中,选择查询参数(在屏幕左侧),并为“已更改”事件添加代码。在该事件处理程序中,您可以计算您想要的字段。例如,我有这2个变量(已经定义为数据项):

RecordsCount = ProjectsByName.Count.ToString() 
TotalHours = ProjectsByName.Sum(Function(project) project.Hours)

(VB代码)
每次在“名称”文本框中输入内容并按Enter或Tab键时,查询将使用新条件执行,然后触发Changed事件处理程序,属性将刷新其值。
需要记住的是,要使其工作,您应该关闭分页。否则它将计算当前页面的结果 如果需要分页,则可以始终执行第二个查询以获得总结果。