2012-04-09 32 views
2

,所以我有这样的应用程序,我有一个基于查询创建一个简单的搜索屏幕(该查询获取的所有金融交易指定搜索条件)添加自定义的搜索界面的自定义计算的字段LightSwitch中

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

我试图增加对金融交易表中的计算领域,但它没有任何意义..

我应该在这样的情况呢?

在此先感谢。

问候,

回答

1

我假设你通过搜索,用户输入自己的标准,在默认的搜索框搜索屏幕上的意思。请记住,内置的搜索实际上不是对数据库的搜索,而是您已经检索的查询的过滤器。所以当用户“搜索”某个东西时,他实际上是从屏幕上过滤掉了一些行,但仍然是绑定到网格上的底层数据集合。
我不知道有任何拦截内置搜索框行为的方式。

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

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

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

(VB代码)
您输入的名称文本框的东西,打每次进入或选项卡时,查询与执行新的标准,然后Changed事件处理程序触发并且属性刷新它们的值。
需要注意的是,为了使其工作,您应该关闭分页。否则,它会计算当前页面的结果。
如果需要分页,那么你总是可以执行第二个查询来获得总结果。