none
DataGridView-Spaltennamen als Enumeration RRS feed

  • Frage

  • Hallo,
    ich habe ein UserControl mit einem DataGridView.
    Die Spalten sind zur Entwirfszeit bereits festgelegt.
    Jetzt will ich das Ein- und Ausblenden einzelner Spalten ermöglichen.

            public void ShowColumn(string columnName, bool isVisible)
            {
                grdTest.Columns[columnName].Visible = isVisible;
            } 

    Da die Spalten aber bereits existieren, müsste es doch möglich sein, diese als Enumeration zur Auswahl als Methodenparameter und nicht wie bisher als String anzugeben.

    enum ColumnName {ColumnId, ColumnArtikelName1, ColumnArtikelName2, ColumnArtikelNummer};

    Ziel:
    public void ShowColumn(ColumnName columnName, bool isVisible)

    Ist das möglich und wie?

     

    Alexander

    Freitag, 10. Februar 2012 09:12

Antworten

  • Hallo Alexander,

    eine Enumeration bringt Dich dabei nicht wirklich weiter.
    Das ist nur eine Zahl und insofern ebenso gut oder schlecht wie eine Zeichenfolge.
    Schlecht dann, wenn sich Reihenfolge, Anzahl, Namen der Spalten im DataGridView oder der Daten mal ändert.

    Die Frage, die man sich erst beantworten sollte:
    Wie wird die Methode ShowColumn verwendet und wie kommt sie zu ihrem columName.

    Zwei Szenarien, die mir adHoc eingefallen sind:

    Würde sie z. B. aus einem (Kontext-)Menü verwendet, so könnte sie sich die Informationen
    über die enthaltenen Spalten zur Laufzeit besorgen, davon den HeaderText für die Anzeige verwenden.
    Und den Visible Status direkt direkt über DataGridViewColumn setzen.

    Variante 2: Wird sie wiederum aus Sicht der Datenquelle verwendet, so kann man die Verbindung
    über den Eigenschaftsnamen (bzw. die DataColumn) und die DataPropertyName-Eigenschaft herstellen.

    In beiden Fällen würden man weder String-Konstanten noch eine Enumeration benötigen.
    Änderungen sowohl am Aufbau des DataGridView oder der Datenquelle würden ohne Code-Änderung funktionieren.

    Wenn Du sie für eine dritte, vierte Variante verwendest, so gibt es vermutlich auch dafür einen Weg.

    Gruß Elmar

    • Als Antwort markiert AlexanderRi Sonntag, 12. Februar 2012 19:04
    Freitag, 10. Februar 2012 09:59
    Beantworter