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?
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
Wenn ich über den Index zugreife, bietet fehlt leider die Eigenschaft .Visibilty oder ähnliches...
Hallo,
folgendes sollte funktionieren:
dataGrid.Columns[0].Visibility=Visibility.Hidden;
Gruß
Michael
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
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
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.