0

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

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

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

それとも私が間違っていますか?何か助けはありますか?

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

4

3 に答える 3

1

数年前、私は IG WebGrid でまさにこれを行わなければなりませんでした。ただし、WebGrid にはレンダリング ポイントが 1 つしかないという利点がありました。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
于 2008-11-12T16:18:49.183 に答える
0

私たちは最終的に、その問題に対する 2 つの解決策を思い付きました。

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

非常にリソースが重要な外観のために、UltraGrid.DrawFilter を使用します (IUIElementDrawFilter インターフェイスも参照してください)。

于 2009-04-20T14:57:10.280 に答える
0

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

また、この記事が役立つかもしれません。

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

于 2008-11-12T15:36:07.337 に答える