Сначала нажмите «Добавить элемент данных» и добавьте локальное свойство типа String. Ради обсуждения назовите его SearchType
. В окне свойств SearchType
щелкните Список выбора. Заполните список выбора значениями, указанными выше (например, Все оборудование, Новое оборудование и т. д.). Перетащите это в дерево элементов управления, и оно станет AutoCompleteBox.
Щелкните правой кнопкой мыши то, что я собираюсь назвать вашей таблицей Equipment
, и нажмите «Добавить запрос». Дайте этому имя, например EquipmentSearch
. Настройте запрос, аналогичный тому, который показан на шаге 2 ссылки Янна:
![введите здесь описание изображения](https://i.stack.imgur.com/AX0KF.png)
Добавьте параметр, но не добавляйте фильтр. Вместо TownId
назовем его SearchParam
и сделаем типом String.
Вернувшись в конструктор экрана, используйте команду «Добавить элемент данных», чтобы добавить запрос EquipmentSearch
на экран. Перетащите его на дерево, чтобы оно стало представлением сетки.
Нажмите EquipmentSeach
в левом списке, чтобы он развернулся. Затем щелкните SearchParam
и в окне свойств щелкните поле под привязкой параметров и выберите SearchType
.
Снова откройте EquipmentSearch
в конструкторе запросов. В правом верхнем углу конструктора запросов щелкните стрелку рядом с надписью «Написать код» и выберите EqupimentSearch_PreprocessQuery
.
Теперь добавьте код, подобный следующему:
ВБ.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 для настройки возвращаемых результатов по своему усмотрению.
person
embedded.kyle
schedule
16.07.2012