2009-04-23 34 views
6

Tôi gặp sự cố khi nhận bộ lọc để hoạt động trên BindingSource là DataSource cho điều khiển DataGridView. Về cơ bản, tôi có truy vấn LINQ là DataSource cho BindingSource và tôi muốn lọc kết quả. Dưới đây là một ví dụ về những gì tôi đang cố gắng hoàn thành.Làm cách nào để lọc một BindingSource có truy vấn LINQ là DataSource

Dim query = From row In dataTable _ 
      Select New MyRow(row) 

Dim bs As New BindingSource() 
bs.DataSource = query.ToList() 

grid.DataSource = bs 

bs.Filter = "Col1 = 'value'" 

...

Public Class MyRow 
    Private _key As String 
    Private _col1 As String 

    Public Sub New(ByVal row As DataTableRow) 
     _key = GetNewKeyValue() 
     _col1 = row.Col1 
    End Sub 

    Public ReadOnly Property Key() As String 
     Get 
      Return _key 
     End Get 
    End Property 

    Public ReadOnly Property Col1() As String 
     Get 
      Return _col1 
     End Get 
    End Property 
End Class 

Vì vậy, tôi có thể xem tất cả các hàng trong việc kiểm soát DataGridView nhưng bộ lọc không có bất kỳ tác dụng. Nếu tôi chuyển DataSource của BindingSource để sử dụng một DataTable, thì việc lọc hoạt động như mong đợi. Tôi đang thiếu gì?

Trả lời

4

Từ các tài liệu BindingSource:

nên thường được dùng trong liên kết dữ liệu phức tạp kịch bản, các tài sản Filter cho phép bạn xem một tập hợp con của DataSource. Chỉ các danh sách cơ bản triển khai bộ lọc hỗ trợ giao diện IBindingListView

Các vấn đề liên quan