所以我有这个应用程序,我必须根据查询创建一个简单的搜索屏幕(此查询获取指定搜索条件的所有金融交易)
所以我想要的是在屏幕上添加一个显示搜索结果总和的计算字段。 不是所有记录的总和。
我试图在金融交易表上添加一个计算字段,但它没有任何意义..
在这种情况下我该怎么办?
提前致谢。
问候,
所以我有这个应用程序,我必须根据查询创建一个简单的搜索屏幕(此查询获取指定搜索条件的所有金融交易)
所以我想要的是在屏幕上添加一个显示搜索结果总和的计算字段。 不是所有记录的总和。
我试图在金融交易表上添加一个计算字段,但它没有任何意义..
在这种情况下我该怎么办?
提前致谢。
问候,
我假设您的意思是搜索,用户在搜索屏幕上的默认搜索框中输入他们的标准。请记住,内置搜索实际上不是对数据库的搜索,而是对您已经检索到的查询的过滤器。因此,当用户“搜索”某些东西时,他实际上是从屏幕上过滤掉了行,但仍然在绑定到网格的基础数据集合上。
我不知道有任何拦截内置搜索框行为的方法。
实现我认为您想要的一种方法是创建一个查询并根据所需的搜索条件对其进行参数化,然后围绕它构建一个搜索屏幕。您可以隐藏默认搜索框以使其更清晰。
例如,假设我有一个带有 Hours 字段的 Projects 表。首先,我根据项目创建一个查询,在其中添加一个过滤器,如“名称包含 NameParam”。使该参数在屏幕上可见(使用本文作为指南:http: //blogs.msdn.com/b/bethmassi/archive/2010/11/09/creating-a-custom-search-screen-in-visual -studio-lightswitch.aspx )
现在我将使用一个技巧,这是我见过的一种技术,我对它不是 100% 满意,这是基于一个事实,到目前为止,绑定到查询参数的文本框的 Changed 事件在执行屏幕查询后发生,但它适用于当前版本的 LS。在设计器中,选择查询参数(在屏幕左侧),并为“Changed”事件添加代码。在该事件处理程序中,您可以计算您想要的字段。例如,我有这 2 个变量(已经定义为数据项):
RecordsCount = ProjectsByName.Count.ToString()
TotalHours = ProjectsByName.Sum(Function(project) project.Hours)
(VB 代码)
每次您在 Name 文本框中输入内容并按 Enter 或 Tab 退出时,查询都会使用新条件执行,然后触发 Changed 事件处理程序并且属性刷新它们的值。
要记住的是,要使其正常工作,您应该关闭分页。否则它将计算当前页面的结果。
如果需要分页,那么您始终可以执行第二个查询以获取总结果。