h41msh1c0r
Goto Top

Powershell DataTable DataView

Hi in die Runde,

ich habe ein DataGridView. An dieses habe ich eine DataTable gehängt.
Jetzt möchte ich Spalten Sortieren.
Das Control gibt es her, allerdings sortiert es ja nur die Ansicht, nicht die DataTable.
Nach Googlen hieß das Mittel der Wahl DataView.

Demo im kleinen funktioniert.
$dtEmployee = New-Object system.Data.DataTable "Employee"  
$dcId = New-Object system.Data.DataColumn "Id", ([string])  
$dcName = New-Object system.Data.DataColumn "Name", ([String])  

$dtEmployee.Columns.Add($dcId)
$dtEmployee.Columns.Add($dcName)

$dtEmployee.Clear()

$row1 = ("1", "Test")  
$dtEmployee.Rows.Add($row1)

$row3 = ("7", "ZZZ")  
$dtEmployee.Rows.Add($row3)

$row2 = ("5", "AAAA")  
$dtEmployee.Rows.Add($row2)

$dvEmployee = $dtEmployee.DefaultView

$dvEmployee.Sort = "Id Asc"  
$dtNewEmployee = $dvEmployee.ToTable()

Id Name
-- ----
1  Test
7  ZZZ 
5  AAAA

--- Ergebnis ----
1  Test
5  AAAA
7  ZZZ 

Wenn ich das nun versuche zu verbauen:
$global:DataView = $global:table.DefaultView        
$global:DataView.Sort = "$columnName $direction"  
$global:table = $global:DataView.ToTable()

DataGridViewTextBoxColumn { Name=PxeS, Index=9 }
PxeS
Ausnahme beim Festlegen von "Sort": "Spalte PxeS Ascending wurde nicht gefunden."  
In Zeile:1286 Zeichen:9
+         $global:DataView.Sort = "$columnName $direction"  
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , SetValueInvocationException
    + FullyQualifiedErrorId : ExceptionWhenSetting

Die Spalte heißt wirklich PxeS und die Richtung mit "Ascending" ist auch korrekt.

Ich steh gerade etwas auf dem Schlauch wieso er "PxeS Ascending" komplett als Spalte interpretiert?

VG

Content-Key: 351153

Url: https://administrator.de/contentid/351153

Printed on: April 20, 2024 at 02:04 o'clock

Member: colinardo
Solution colinardo Oct 09, 2017 updated at 14:16:54 (UTC)
Goto Top
Servus,
Die Spalte heißt wirklich PxeS und die Richtung mit "Ascending" ist auch korrekt.
Nope: TIPP: "Ascending""ASC" face-wink
DataView.Sort-Eigenschaft
A string that contains the column name followed by "ASC" (ascending) or "DESC" (descending). Columns are sorted ascending by default. Multiple columns can be separated by commas.
Grüße Uwe
Member: H41mSh1C0R
H41mSh1C0R Oct 09, 2017 at 14:25:53 (UTC)
Goto Top
Moin Uwe,

die Richtung hole ich hier:
$direction = [System.ComponentModel.ListSortDirection]::Ascending
        
        if ($column.HeaderCell.SortGlyphDirection -eq 'Descending')  
        {
            $direction = [System.ComponentModel.ListSortDirection]::Descending
        }

Selbst wenn ich dort direkt ASC oder DESC eintrage liefert er einen Fehler.

$directionShort = "ASC"  
$global:DataView.Sort = "$columnName, $directionShort"  

Ergebnis:
Ausnahme beim Festlegen von "Sort": "Spalte ASC wurde nicht gefunden."  
In Zeile:1306 Zeichen:9
+         $global:DataView.Sort = "$columnName, $directionShort"  
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , SetValueInvocationException
    + FullyQualifiedErrorId : ExceptionWhenSetting

VG
Member: colinardo
Solution colinardo Oct 09, 2017 updated at 14:34:02 (UTC)
Goto Top
"$columnName, $directionShort"
Das Komma darf dort nicht stehen! Les nochmal den Abschnitt oben ...

Ich schieb mal einen Kaffee latte rüber face-big-smile.

Duck und wech ...
Member: H41mSh1C0R
H41mSh1C0R Oct 09, 2017 updated at 14:35:31 (UTC)
Goto Top
MAAAAAAN ^^
So ein kleines (dummes) Komma.

*Kaffee Latte Schlürf*

danköö