Announcement

Collapse
No announcement yet.

DataGridView, Zellen einfärben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataGridView, Zellen einfärben

    Hallo,

    um ein bestimmten Zustand kenntlich zu machen, möchte in Abhängigkeit einer Spalte bestimmte Zellen einer Zeile einfärben. In der gleichen Zeile ist eine versteckte Spalte enthalten, die Zelle enthällt true oder false.

    Nun möchte ich die ersten zwei Zellen dieser Zeile in grün einfärben wenn der Wert in der versteckten Zelle true ist, andernfalls default zuweisen.

    Ich habe ein Beispiel gefunden in dem aber die ganze Zeile eingefärbt wird, aber das ist nicht der gewünschte Effekt.

    Ausserdem die Frage, in welchem Event kann ich Formatierungen der Zeilen in Abhängigkeit bestimmter Werte vornehmen oder muss ich mir eine eigene Funktion schreiben die alle Zeilen durchgeht und so formatiert? Wenn ja, in welchem Event muss ich die Funktion schreiben?

    Dabei ist gewünscht dass das DataGridView beim erstellen/darstellen und beim sortieren (User klickt auf Spaltenkopf) geprüft und die Formatierung bzw Ausgabe in bestimmten Zellen aktualisiert.

    Wäre Euch sehr dankbar für ein Tipp um das zu lösen.


    Vielen Dank,
    Dani

  • #2
    Hallo,

    Ausserdem die Frage, in welchem Event kann ich Formatierungen der Zeilen in Abhängigkeit bestimmter Werte vornehmen oder muss ich mir eine eigene Funktion schreiben die alle Zeilen durchgeht und so formatiert?
    Normalerweise wird im DataBindingComplete-Ereignis über die Zeilen iteriert und je nach Zustand die DefaultCellStyle-Eigenschaft der Zeile gesetzt.

    Nun möchte ich die ersten zwei Zellen dieser Zeile in grün einfärben wenn der Wert in der versteckten Zelle true ist, andernfalls default zuweisen.
    Dazu ebenfalls über die Zeilen iterieren und für jede Zelle die Style-Eigenschaft setzen.
    [highlight=c#]
    private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
    foreach (DataGridViewRow row in (sender as DataGridView).Rows)
    {
    (sender as DataGridView)[0, row.Index].Style.BackColor = Color.Gold;
    }
    }
    [/highlight]


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hi,

      vielen Dank für die schnelle Info.

      Wird den dieses DataBindingComplete-Ereignis immer ausgeführt auch wenn ich eine Zelle verändere bzw die Sortierung ändere?

      Das wäre ja dann der zentrale Anlaufpunkt um das Design der Tabelle zu jeder Zeit zu gewährleisten?

      Bitte noch eine weitere Frage:
      Bin derzeit noch am verbessern meiner Funktion zum einlesen von XML-Daten in das DataGridView. Dabei kann es sein, dass abzufragende Attribute nicht vorhanden sind und es hier zu einem Fehler kommt.

      Wie kann ich über Linq Daten aus dem XML abfragen ohne ein Fehler zu kassieren wenn es das Attribute nicht gibt? Ich habe es schon mal versucht mit

      dim test = if (MyEntries.Element(namespace+"Test").Attribute(nam espace+"Wert"), nothing)

      Aber das klappt so nicht wirklich. Sorry wenn der Syntax nicht direkt stimmt, bin gerade nicht am Rechner an dem ich das ganze schreibe.


      Viele Grüsse,
      Dani

      Comment


      • #4
        Wird den dieses DataBindingComplete-Ereignis immer ausgeführt auch wenn ich eine Zelle verändere bzw die Sortierung ändere?
        Ja -> siehe DataGridView..::.DataBindingComplete-Ereignis Die MSDN ist oft einen Blick wert

        Wie kann ich über Linq Daten aus dem XML abfragen ohne ein Fehler zu kassieren wenn es das Attribute nicht gibt?
        Kann dir nur C#-Code posten - die Übersetzung nach VB.net bringe ich nicht zusammen. Aber das steht ja auch in der MSDN: How to: Retrieve a Single Attribute (LINQ to XML)


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment

        Working...
        X