Frage

Wir verwenden Infragistics Gitter (höchstwahrscheinlich, wir Version 8.2 am Ende haben werden), und wir wollen Zeilen / Zellen Erscheinungen „on-demand“ konfigurieren, um der Lage sein, eine Art „dynamische Erscheinung“ zu schaffen, .

Zum Beispiel möchte ich einige Zelle rot oder grün sein, abhängig von seinem Wert. Wir möchten auch andere Eigenschaften optimieren (Schriftart, Größe, Bild, etc.).

Ein perfekten Ort zu tun, wäre es ein Ereignis sein, das geschehen, bevor eine Zelle neu gezeichnet wird ... Aber es scheint, dass es kein solches Ereignis in Infragistics ist ...

Oder bin ich falsch? Jede Hilfe?

Zur Verdeutlichung: Ich spreche über WinForms Infragistics Ultragrid

War es hilfreich?

Lösung 3

Wir sind gekommen, endlich mit zwei Lösungen für dieses Problem auf.

Für einige der dynamischen Inhalte verwenden wir Rasterelemente Aussehen und neu initialisieren es „on-demand“.

Für die extrem ressourcenkritischen Aussehen wir UltraGrid.DrawFilter verwenden (siehe auch IUIElementDrawFilter Schnittstelle).

Andere Tipps

ich tun musste, genau dies mit der IG ein paar Jahre WebGrid zurück, und es war ... sagen wir mal ... schmerzhaft. Allerdings hatte die WebGrid den Vorteil eines einzigen Punkt machen - sobald die HTML emittiert wurde, setzen wir wurden

in WinGrid Umgang mit dieser habe ich versucht, eine Vielzahl von verschiedenen Veranstaltungen, die beide auf dem Gitter und die Datenquelle, und traf dich mit bitterem Ausfall bei jedem Schritt des Weges. Die einzige Veranstaltung, die ich an der Arbeit bekam, war Paint, was wahrscheinlich ein Leistungsproblem schaffen wird.

Für Paint, hier ist was ich zusammen gehackt. Ich bin dieser Code nicht stolz, und ich würde wahrscheinlich nicht in Betrieb genommen, aber hier ist es sowieso (C #):

private void UltraGrid1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    foreach (UltraGridRow r in UltraGrid1.Rows)
    {
        foreach (UltraGridCell c in r.Cells)
        {
            if (c.Text == "foo")
                c.Appearance.BackColor = Color.Green;
        }
    }
}

und VB:

Private Sub UltraGrid1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles UltraGrid1.Paint
    For Each r As UltraGridRow In UltraGrid1.Rows
        For Each c As UltraGridCell In r.Cells
            If c.Text = "foo" Then
                c.Appearance.BackColor = Color.Green
            End If
        Next
    Next
End Sub

Es ist ein Ereignis. Ich erinnere mich nicht genau, was es heißt, aber es hat so etwas wie ‚DataRowBound‘ oder ‚ItemDataBinding‘ zu sein, etc ..

Auch dieser Artikel könnte helfen.

Nicht, dass dies nichts mit Ihrer Frage zu tun hat, aber ich würde bleiben von starkem Gebrauch von Infragistics Kontrollen weg - sie sehr schwer sind und die Seite Rendering-Prozess erheblich verlangsamen. Nur mein $ 0,02.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top