Скрыть все строки в DataGridView с помощью VB - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь отфильтровать данные в DataGridView, и мне нужно скрыть все строки и столбцы. Я пытаюсь сделать это с помощью LINQ и лямбда-выражений списка зацикливания, потому что если я использую foreach, он медленный, когда я пытаюсь отфильтровать 3000 строк.

Следующий код выполняется без ошибок и отлично работает в c #, но не скрывает строки в vb:

c # отлично работает

dataGridView1.Columns.OfType<DataGridViewColumn>().ToList().ForEach(col => col.Visible = false);

VB не работает

datagrid.Rows.OfType(Of DataGridViewRow)().ToList().ForEach(Function(obj) obj.Visible = False)

Я ищу эквивалентный код в VB.

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

это будет делать именно то, что вы хотите

Dim dv As DataView
dv = New DataView(ds.Tables(0), "name = 'Devcon' ", "type Desc", DataViewRowState.CurrentRows)
DataGridView1.DataSource = dv
0 голосов
/ 30 мая 2019

Вы должны связать данные и выполнять свои операции над самими данными, а не с пользовательским интерфейсом.Вы можете сделать следующее:

Public Class Form1

    Private allData As IEnumerable(Of Data) ' all your data
    Private filtered As IEnumerable(Of Data) ' filtered for logical and display purposes

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        allData = Enumerable.Range(0, 32).Select(Function(i) New Data() With {.Value = i})
        updateFilteredNumbers(Function(d) True) ' filtered list initially identical to all
    End Sub
    Private Sub HideButton_Click(sender As Object, e As EventArgs) Handles HideButton.Click
        updateFilteredNumbers(Function(d) False)
    End Sub
    Private Sub ShowButton_Click(sender As Object, e As EventArgs) Handles ShowButton.Click
        updateFilteredNumbers(Function(d) True)
    End Sub
    Private Sub EvenButton_Click(sender As Object, e As EventArgs) Handles EvenButton.Click
        updateFilteredNumbers(Function(d) d.Value Mod 2 = 0)
    End Sub
    Private Sub OddButton_Click(sender As Object, e As EventArgs) Handles OddButton.Click
        updateFilteredNumbers(Function(d) d.Value Mod 2 = 1)
    End Sub
    Private Async Sub updateFilteredNumbers(predicate As Func(Of Data, Boolean))
        ' perform filtering asynchronously, then update datasource on UI thread
        filtered = Await Task.Factory.StartNew(Function() allData.Where(predicate).ToList())
        datagrid.DataSource = filtered
    End Sub

End Class

Public Structure Data ' Class to represent your data. Simple for this example
    Public Property Value As Integer
End Structure

В этом примере можно скрыть все, показать все или показать только нечетные или четные значения.Вы можете обновить «отфильтрованную» коллекцию и просто обновить источник данных.

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