eric897

DataGrid nach bestimmten Parameter filtern

Grüße,

ich würde gern in mein DataGrid etwas rausfiltern.
Wie würde denn sowas gehen im Internet finde ich nix außer das hier :

$dataGrid_OVERVIEW.DataSource.filter

Vielleicht weiß jemand wie sowas allgemein geht :D
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 6188028622

Url: https://administrator.de/forum/datagrid-nach-bestimmten-parameter-filtern-6188028622.html

Ausgedruckt am: 01.07.2025 um 08:07 Uhr

7907292512
Lösung 7907292512 14.09.2023 aktualisiert um 13:19:01 Uhr
Goto Top
Filtere die Quelldaten mittels where-object und weise die Daten dann der DataSource-Eigenschaft zu.
Beispiele findest du hier en Masse.
z.B. Filteroptionen für DataTable

Add-Type -A System.Windows.Forms

$data = get-process
$arraylist = New-Object System.Collections.ArrayList
$arraylist.AddRange(@($data))

$form = New-Object System.Windows.Forms.Form -P @{
    ClientSize = '800,600'  
    Text = "Filter Data"  
}
$dgv = New-Object System.Windows.Forms.DataGridView -P @{
    Location = "10,10"  
    Size = "780,500"  
    DataSource = $arraylist
}
$btnFilter = New-Object System.Windows.Forms.Button -P @{
    Text = "Filter to Explorer.exe process"  
    Location = "10,530"  
    Size = "200,30"  
    add_Click = {
        $data = $arraylist | ? Name -eq 'explorer'  
        $arraylist = New-Object System.Collections.ArrayList
        $arraylist.AddRange(@($data))
        $dgv.DataSource = $arraylist
    }
}
$form.Controls.AddRange(@($dgv,$btnFilter))
$form.ShowDialog() | out-null
Gruß sid
Eric897
Eric897 14.09.2023 um 15:12:57 Uhr
Goto Top
Zitat von @7907292512:

Filtere die Quelldaten mittels where-object und weise die Daten dann der DataSource-Eigenschaft zu.
Beispiele findest du hier en Masse.
z.B. Filteroptionen für DataTable

Add-Type -A System.Windows.Forms

$data = get-process
$arraylist = New-Object System.Collections.ArrayList
$arraylist.AddRange(@($data))

$form = New-Object System.Windows.Forms.Form -P @{
    ClientSize = '800,600'  
    Text = "Filter Data"  
}
$dgv = New-Object System.Windows.Forms.DataGridView -P @{
    Location = "10,10"  
    Size = "780,500"  
    DataSource = $arraylist
}
$btnFilter = New-Object System.Windows.Forms.Button -P @{
    Text = "Filter to Explorer.exe process"  
    Location = "10,530"  
    Size = "200,30"  
    add_Click = {
        $data = $arraylist | ? Name -eq 'explorer'  
        $arraylist = New-Object System.Collections.ArrayList
        $arraylist.AddRange(@($data))
        $dgv.DataSource = $arraylist
    }
}
$form.Controls.AddRange(@($dgv,$btnFilter))
$form.ShowDialog() | out-null
Gruß sid

Okay vielen Dank ich probiere mich ma daran aus!
Eric897
Eric897 14.09.2023 um 15:23:41 Uhr
Goto Top
Aber geht auch rausfiltern das heißt es wird dann nicht angezeigt?
7907292512
Lösung 7907292512 14.09.2023, aktualisiert am 04.10.2023 um 16:24:27 Uhr
Goto Top
Zitat von @Eric897:

Aber geht auch rausfiltern das heißt es wird dann nicht angezeigt?

Klar einfach mal die verfügbaren Operatoren anschauen
about_Operators
$arraylist | ? Name -notlike '*explorer*'    
$arraylist | ? Name -notin 'explorer','firefox','chrome'    
$arraylist | ? Name -notmatch '^ex..orer$'  
usw....
...


Hier das ganze auch nochmal als Alternative mittels einer Datatable als Datenquelle:
Add-Type -A System.Windows.Forms

# Datenquelle erstellen
$data = New-Object System.Data.DataTable
$data.Columns.AddRange(@("Vorname","Nachname"))  
$data.Rows.Add(@("Max","Muster"))  
$data.Rows.Add(@("Petra","Musterfrau"))  

$form = New-Object System.Windows.Forms.Form -P @{
    ClientSize = '800,600'    
    Text = "Filter Data"  
}
$dgv = New-Object System.Windows.Forms.DataGridView -P @{
    Location = "10,10"    
    Size = "780,500"  
    # Datenquelle dem DataGridView zuweisen
    DataSource = $data
}
$btnFilter = New-Object System.Windows.Forms.Button -P @{
    Text = "Nach Vorname filtern"  
    Location = "10,530"    
    Size = "200,30"    
    add_Click = {
        # Möglichkeiten die Datenquelle des DataGridViews auf bestimmte Einträge zu beschränken
        # für weitere Möglichkeiten und die Filter-Syntax:
        # https:{{comment_single_line_double_slash:0}}

        # Normaler Vergleich
        $data.DefaultView.RowFilter = "Vorname = 'Max'"  
        # Wildcard Vergleich
        #$data.DefaultView.RowFilter = "Vorname like 'Ma*'" 
        # Listenvergleich
        #$data.DefaultView.RowFilter = "Vorname IN ('Max','Petra')" 
    }
}
$form.Controls.AddRange(@($dgv,$btnFilter))
$form.ShowDialog() | out-null


RTFM!
PowerShell - Leitfaden für Anfänger