質問

Infragisticsグリッドを使用しており(ほとんどの場合、最後に8.2バージョンがあります)、行/セルの外観を「オンデマンド」に設定します。一種の「動的な外観」を提供できるようにするため。

たとえば、値に応じて一部のセルを赤または緑にしたい。他の特性(フォント、サイズ、画像など)も調整したい場合があります。

それを行うのに最適な場所は、セルが再描画される前に発生するイベントです...しかし、Infragisticsにはそのようなイベントはないようです...

または私は間違っていますか?助けが必要ですか?

明確化: WinForms Infragistics UltraGridについて話している

役に立ちましたか?

解決 3

ようやく、この問題の2つの解決策を思いつきました。

一部の動的コンテンツでは、グリッド要素の外観を使用して、「オンデマンド」で再初期化します。

非常にリソースが重要な外観には、UltraGrid.DrawFilterを使用します(IUIElementDrawFilterインターフェイスも参照)。

他のヒント

数年前にIG WebGridでこれを正確に実行する必要がありました。ただし、WebGridには単一のレンダリングポイントという利点がありました。HTMLが発行されると、設定されました!

WinGridでこれを処理するために、グリッドとデータソースの両方でさまざまなイベントを試しましたが、すべての段階で重大な障害に遭遇しました。私が仕事に着いた唯一のイベントは Paint で、これはパフォーマンスの問題を引き起こす可能性があります。

Paint の場合、ここで一緒にハッキングしました。私はこのコードを誇りに思っていませんし、実稼働環境には入れないでしょうが、とにかくここにあります(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;
        }
    }
}

および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

イベントがあります。私はそれが何と呼ばれているかを正確に覚えていませんが、「DataRowBound」や「ItemDataBinding」などのようなものにならなければなりません。

また、この記事が役立つ場合があります。

これはあなたの質問と関係があるわけではありませんが、Infragisticsコントロールの頻繁な使用は避けたいと思います。非常に重く、ページのレンダリングプロセスが大幅に遅くなります。ちょうど私の$ 0.02。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top