Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This example shows how to filter data in a view.
Example
To create a filter, define a method that provides the filtering logic. The method is used as a callback and accepts a parameter of type object
. The following method returns all the Order
objects with the filled
property set to "No", filtering out the rest of the objects.
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
You can then apply the filter, as shown in the following example. In this example, myCollectionView
is a ListCollectionView object.
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
To undo filtering, you can set the Filter property to null
:
myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing
For information about how to create or obtain a view, see Get the Default View of a Data Collection. For the complete example, see Sorting and Filtering Items in a View Sample.
If your view object comes from a CollectionViewSource object, you apply filtering logic by setting an event handler for the Filter event. In the following example, listingDataView
is an instance of CollectionViewSource.
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter
The following shows the implementation of the example ShowOnlyBargainsFilter
filter event handler. This event handler uses the Accepted property to filter out AuctionItem
objects that have a CurrentPrice
of $25 or greater.
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
See also
.NET Desktop feedback