none
PagedCollectionView怎么可以做到动态Filter? RRS feed

  • 问题

  • WCF RIA service + Datagrid +PagedCollectionView 

       Private Sub FilterButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles FilterButton.Click
            If PCV IsNot Nothing & PCV.CanFilter = True Then
                PCV.Filter = New Predicate(Of Object)(AddressOf FilterCompletedTasks)
            End If

        End Sub
        Public Function FilterCompletedTasks(ByVal t As Object) As Boolean
            Select Case DG.CurrentColumn.Header
                Case "ID"
                    Return (CType(t, DataCheck).ID= "A001")
                Case "Name"
                    Return (CType(t, DataCheck).Name= "Tom")
                Case Else
                    Return False
            End Select     End Function

    1,用户在选择Datagrid不同列要做筛选时,,,怎么动态写PagedCollectionView的Filter语句呢?   

    2,网上有介绍多种对数据排序,分组,筛选,分页的方法,,,如: DomainDataSource ,DomainService 。还有这个 PagedCollectionView

       现在推荐的是哪种方法啊?


    不吝赐教
    2010年12月15日 2:41

答案

  • #1. Predicate code不能动态生成,不如你事先定义好一组Predicate,然后根据用户操作来修改PCV.Filter

    #2. DomainDataSource和DomainService是在服务端进行排序和筛选,每次修改条件会重新向服务器请求数据。PagedCollectionView在本地执行排序,筛选。 在处理大数据量时,把所有数据下载到客户端来筛选是不可能的,服务端排序和筛选是唯一选择。

     


    Mog Liang
    • 已标记为答案 Mog Liang 2010年12月22日 9:36
    2010年12月21日 7:14

全部回复

  • #1. Predicate code不能动态生成,不如你事先定义好一组Predicate,然后根据用户操作来修改PCV.Filter

    #2. DomainDataSource和DomainService是在服务端进行排序和筛选,每次修改条件会重新向服务器请求数据。PagedCollectionView在本地执行排序,筛选。 在处理大数据量时,把所有数据下载到客户端来筛选是不可能的,服务端排序和筛选是唯一选择。

     


    Mog Liang
    • 已标记为答案 Mog Liang 2010年12月22日 9:36
    2010年12月21日 7:14
  • #1. Predicate code不能动态生成,不如你事先定义好一组Predicate,然后根据用户操作来修改PCV.Filter

    #2. DomainDataSource和DomainService是在服务端进行排序和筛选,每次修改条件会重新向服务器请求数据。PagedCollectionView在本地执行排序,筛选。 在处理大数据量时,把所有数据下载到客户端来筛选是不可能的,服务端排序和筛选是唯一选择。

     


    Mog Liang

    我在Silverlight.net上看到一个例子,有人重写了DataGrid,,,不是继承,,,他解决了动态Filter的问题,,,

    我从他的源程序中也看出一点眉目,但还不是很理解,学习中


    不吝赐教
    2011年3月22日 1:59