Postupy: Filtrování dat v zobrazení
Tento příklad ukazuje, jak filtrovat data v zobrazení.
Příklad
Pokud chcete vytvořit filtr, definujte metodu, která poskytuje logiku filtrování. Metoda se používá jako zpětné volání a přijímá parametr typu object
. Následující metoda vrátí všechny Order
objekty s filled
vlastnost nastavena na "Ne", a vyfiltruje zbytek objektů.
public bool Contains(object de)
{
Order order = de as Order;
//Return members whose Orders have not been filled
return(order.Filled== "No");
}
Public Function Contains(ByVal de As Object) As Boolean
Dim order1 As Order = TryCast(de, Order)
Return (order1.Filled Is "No")
End Function
Filtr pak můžete použít, jak je znázorněno v následujícím příkladu. V tomto příkladu je myCollectionView
objekt ListCollectionView.
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
Pokud chcete filtrování vrátit zpět, můžete vlastnost Filter nastavit na null
:
myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing
Informace o tom, jak vytvořit nebo získat zobrazení, naleznete v tématu Získání výchozího zobrazení kolekce dat. Úplný příklad najdete v zobrazení „Řazení a filtrování položek v ukázce“.
Pokud objekt zobrazení pochází z objektu CollectionViewSource, použijete logiku filtrování nastavením obslužné rutiny události pro událost Filter. V následujícím příkladu je listingDataView
instancí CollectionViewSource.
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter
Následující ukazuje implementaci obslužné rutiny události filtru ShowOnlyBargainsFilter
. Tato obslužná rutina události používá vlastnost Accepted k vyfiltrování AuctionItem
objektů, majících CurrentPrice
25 $ nebo vyšší.
private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
{
AuctionItem product = e.Item as AuctionItem;
if (product != null)
{
// Filter out products with price 25 or above
if (product.CurrentPrice < 25)
{
e.Accepted = true;
}
else
{
e.Accepted = false;
}
}
}
Private Sub ShowOnlyBargainsFilter(ByVal sender As Object, ByVal e As FilterEventArgs)
Dim product As AuctionItem = CType(e.Item, AuctionItem)
If Not (product Is Nothing) Then
'Filter out products with price 25 or above
If product.CurrentPrice < 25 Then
e.Accepted = True
Else
e.Accepted = False
End If
End If
End Sub
Viz také
- CanFilter
- CustomFilter
- Přehled datových vazeb
- Řazení Dat v Zobrazení
- Témata postupů
.NET Desktop feedback