首先单击添加数据项并添加字符串类型的本地属性。为了讨论方便,称之为SearchType
。在属性窗口中SearchType
单击选择列表。使用上面列出的值填充选择列表(即所有设备、新设备等)。将其拖到控件树上,它将成为一个 AutoCompleteBox。
右键单击我要称呼您的内容Equipment
表并单击添加查询。给它起一个名字,比如EquipmentSearch
。设置类似于 Yann 链接的步骤 2 中所示的查询:
添加参数但不添加过滤器。代替TownId
我们就这样称呼它吧SearchParam
并将其设置为 String 类型。
返回屏幕设计器,使用添加数据项添加EquipmentSearch
查询到您的屏幕。将其拖到树上,使其成为网格视图。
Click EquipmentSeach
位于左侧列表中,以便其展开。然后点击SearchParam
在其“属性”窗口中,单击“参数绑定”下方的框并选择SearchType
.
Open up EquipmentSearch
再次在查询设计器中。在查询设计器的右上角,单击“编写代码”旁边的箭头并选择EqupimentSearch_PreprocessQuery
.
现在添加类似于以下的代码:
VB.NET
Private Sub EquipmentSearch_PreprocessQuery(SearchParam As System.Nullable(Of String), ByRef query As System.Linq.IQueryable(Of LightSwitchApplication.Equipment))
Select Case SearchParam
Case "New Equipment"
query = From es In query
Where es.EquipStatus = "New"
Select es
Case "Available Equipment"
query = From es In query
Where es.EquipStatus = "Available"
Select es
Case "Sold Equipment"
query = From es In query
Where es.EquipStatus = "Sold"
Select es
Case "Unpaid Equipment"
query = From es In query
Where es.EquipStatus = "Unpaid"
Select es
Case "Unpaid Commission"
query = From es In query
Where es.EquipCommission = "Unpaid"
Select es
End Select
End Sub
C#
private void EquipmentSearch_PreprocessQuery(System.Nullable[] SearchParam, void Of, void String) {
((System.Linq.IQueryable[])(query));
Of;
LightSwitchApplication.Equipment;
switch (SearchParam) {
case "New Equipment":
query = From es In query
Where es.EquipStatus = "New"
Select es
break;
case "Available Equipment":
query = From es In query
Where es.EquipStatus = "Available"
Select es
break;
case "Sold Equipment":
query = From es In query
Where es.EquipStatus = "Sold"
Select es
break;
case "Unpaid Equipment":
query = From es In query
Where es.EquipStatus = "Unpaid"
Select es
break;
case "Unpaid Commission":
query = From es In query
Where es.EquipCommission = "Unpaid"
Select es
break;
}
让“所有装备”和所有其他装备都失败。如果它失败了,那么网格视图将显示整个表格的完整的、未过滤的视图,这就是我假设您在“所有设备”的情况下想要的。在其他情况下,可以根据需要使用 LINQ 自定义返回结果。