1

在 LightSwitch 中,我想在用户选择年份 (int) 的位置添加一个屏幕过滤器,因此查询返回特定日期 (DateTime) 在该年份范围内的所有记录。

我想了解如何添加适当的 PreprocessQuery 代码。

非常感谢。

4

1 回答 1

1

假设你有一个这样的表:

 Id        DateTimeColumn
----    -------------------
 0        1/1/2001 8:00 AM
 1        2/2/2002 8:00 AM
 2        3/3/2003 8:00 AM
 3        4/4/2004 8:00 AM

将调用的整数类型数据项添加YearSelect到屏幕并创建一个包含您想要的所有年份的选择列表(或者,使用表格列出所有年份)。将其拖到屏幕树上,它将成为一个 AutoCompleteBox 并允许您选择一年。

在上表的查询设计器中创建一个查询并添加一个名为YearFilter. 将此查询添加到屏幕并绑定YearFilterYearSelect.

返回查询设计器,单击编写代码旁边的箭头并选择TableName_PreprocessQuery。将以下代码添加到 PreprocessQuery:

partial void TableName_PreprocessQuery(int YearFilter, ref IQueryable<Cours> query)  
{
    if (YearFilter != null)
    {
        query = from d in query
                where d.DateTimeColumn.Year = YearFilter
                select d;
    }
}

现在,当您从 AutoCompleteBox 中选择一年时,屏幕上与查询绑定的数据网格应更新并仅显示所选年份中的实体。

于 2012-09-12T12:50:31.457 回答