Infragistics grid „on-demand“ Aussehen
-
08-07-2019 - |
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
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.