Laden...

Im DataGrid Einträge verstecken

Erstellt von JonnyJohnson vor 11 Jahren Letzter Beitrag vor 11 Jahren 919 Views
J
JonnyJohnson Themenstarter:in
17 Beiträge seit 2012
vor 11 Jahren
Im DataGrid Einträge verstecken

Hallo,

ich habe ein DataGrid in welchem ich Spalten ausblenden möchte. MSDN und alle anderen Seite machen den Vorschlag mit

dataGrid.Columns["name"].Visibility=Visibility.Hidden

So schön, so gut, nur mein DataGrid hat keine "Namen" bei den Spalten. Im Debugger selbst wird .Columns als null angegeben, es sind aber Datan vorhanden.
Die Alternative wäre, dass man gezielt die Einträge umspeichert, da scheitert es dann aber an der Formatierung (es wird eine lange Liste, soll aber eine Tabelle zum anschaun werden, 8 Zeilen, 6 Spalten) und mehrdimensionale Zuweisungen an das DataGrid gehen ja irgendwie auch nicht...
Wie geht man da am besten vor?

3.430 Beiträge seit 2007
vor 11 Jahren

Hallo JonnyJohnson,

nur mein DataGrid hat keine "Namen" bei den Spalten

Dann versuch mal über den Index auf die Spalte zuzugreifen.
Das sollte auch klappen.

Grüße
Michael

J
JonnyJohnson Themenstarter:in
17 Beiträge seit 2012
vor 11 Jahren

Wenn ich über den Index zugreife, bietet fehlt leider die Eigenschaft .Visibilty oder ähnliches...

M
166 Beiträge seit 2008
vor 11 Jahren

Hallo,

folgendes sollte funktionieren:

dataGrid.Columns[0].Visibility=Visibility.Hidden;

Gruß

Michael

J
JonnyJohnson Themenstarter:in
17 Beiträge seit 2012
vor 11 Jahren

Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.
Parametername: index

Das Problem ist ja, dass der verwendete Datentyp scheinbar keine Columns einträgt.
.Columns ist zum Beispiel mit 0 angegeben

76 Beiträge seit 2006
vor 11 Jahren

Hallo Jonny!

Willst du die Spalten erst verstecken, wenn das Grid schon angezeigt wird oder gleich von vorn herein nicht?

Im letzteren Fall könntest du dich, vorrausgesetzt, dass die Spalten automatisch generiert werden auch einfach an das AutoGeneratingColumn-Event des DataGrid hängen. Dort kannst du dann checken, ob die Spalte angezeigt werden soll oder nicht. Wenn nicht, einfach im DataGridAutoGeneratingColumnEventArgs-Objekt, das du als Parameter bekommst, die Eigenschaft Cancel auf true setzen. In diesem Objekt erhältst du auch informationen über die Spalte.

Könnte dann z. B. so aussehen:

private void AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    bool showColumn = true;

    // Do some checks

    if(!showColumn)
        e.Cancel = true;
}

Gruß Patrick

J
JonnyJohnson Themenstarter:in
17 Beiträge seit 2012
vor 11 Jahren

Hey ho,

habe es nun per XAML gelöst. Dort die Spalten explizit vorgegeben und an die Member der Daten gebunden. Spart man sich ein bisschen Code 😉
Aber danke für die anderen Vorschläge.