Bagikan melalui


Cara: Memfilter Data dalam Tampilan

Contoh ini memperlihatkan cara memfilter data dalam tampilan.

Contoh

Untuk membuat filter, tentukan metode yang menyediakan logika pemfilteran. Metode ini digunakan sebagai panggilan balik dan menerima parameter jenis object. Metode berikut mengembalikan semua Order objek dengan properti yang filled diatur ke "Tidak", memfilter objek lainnya.

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

Anda kemudian dapat menerapkan filter, seperti yang ditunjukkan dalam contoh berikut. Dalam contoh ini, myCollectionView adalah ListCollectionView objek.

myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)

Untuk membatalkan pemfilteran, Anda dapat mengatur properti ke Filternull:

myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing

Untuk informasi tentang cara membuat atau mendapatkan tampilan, lihat Mendapatkan Tampilan Default Kumpulan Data. Untuk contoh lengkapnya, lihat Mengurutkan dan Memfilter Item dalam Sampel Tampilan.

Jika objek tampilan Anda berasal dari CollectionViewSource objek, Anda menerapkan logika pemfilteran dengan mengatur penanganan aktivitas untuk peristiwa tersebut Filter . Dalam contoh berikut, listingDataView adalah instans dari CollectionViewSource.

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter

Berikut ini menunjukkan implementasi contoh ShowOnlyBargainsFilter penanganan aktivitas filter. Penanganan aktivitas ini menggunakan Accepted properti untuk memfilter AuctionItem objek yang memiliki CurrentPrice $25 atau lebih besar.

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

Baca juga