Как мне отфильтровать BindingSource с запросом LINQ в качестве источника данных - PullRequest
6 голосов
/ 23 апреля 2009

У меня проблемы с получением фильтра для работы с BindingSource, который является DataSource для элемента управления DataGridView. По сути, у меня есть запрос LINQ, который является источником данных для BindingSource, и я хотел бы отфильтровать результаты. Ниже приведен пример того, чего я пытаюсь достичь.

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

Итак, я вижу все строки в элементе управления DataGridView, но фильтр не оказывает никакого влияния. Если я переключу источник данных BindingSource на использование DataTable, тогда фильтрация будет работать, как и ожидалось. Чего мне не хватает?

1 Ответ

4 голосов
/ 23 апреля 2009

Из документации BindingSource:

Обычно используется в сложной привязке данных В сценариях свойство Filter позволяет вам просмотреть подмножество Источник данных. Только основные списки, которые реализовать IBindingListView поддержка интерфейса фильтрации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...