0

私はultrawingrid連絡先でいっぱいです - そのいくつかは、その連絡先の属性に基づいて異なる配色で表示する必要があります。

initializerow次の簡単なコードを使用したイベントがあります。

    private void grdPeople_InitializeRow(object sender, InitializeRowEventArgs e)
    {
        if (e.Row.Cells["NoSMS"].Value != null)
        {
            if (e.Row.Cells["NoSMS"].Value.ToString() == "True")
            {
                e.Row.Appearance.BackColor = System.Drawing.Color.FromArgb(255, 80, 50, 30);
                e.Row.Appearance.ForeColor = System.Drawing.Color.FromArgb(255, 150, 150, 150);
            }
        }
    }

上記のコードは、NoSMSフラグが true に設定されている連絡先をグレー表示します。つまり、連絡を希望しないことを意味します。プライバシー等の尊重

現在、その行が選択されると、この色は「選択された」配色によって上書きされます。ultrawingridつまり、ユーザーが連絡先の大きなグループを選択したときに、どれが「グレー表示」されているかがすぐにはわかりません。

次のコードを追加しようとしましたが、うまくいきませんでした:

                foreach (UltraGridRow row in grdPeople.Selected.Rows)
                {
                    if (e.Row.Index == row.Index)
                    {
                        e.Row.Appearance.BackColor = System.Drawing.Color.FromArgb(255, 80, 50, 30);
                        e.Row.Appearance.ForeColor = System.Drawing.Color.FromArgb(255, 150, 150, 150);
                    }
                }

初期化されている現在の行が現在選択されているかどうかを検出する方法、またはそのコードが機能しない理由を知っている人はいますか?

4

1 に答える 1

3

Appearance最初に行うことは、デザイナーを使用して一度だけ定義し、それをプロパティのAppearancesコレクションに追加することです。 そこに保存されているものはすべて、キー値によって識別されます (このシナリオでは「disabled_row」を使用しましょう)。DisplayLayout
Appearance

このようにして、行ごとに 1 つの外観ではなく、1 つの外観しかありません。
また、その方法でセル値を参照すると、多くのメモリ消費が発生する可能性があります。インフラジスティックスが推奨する方法は、メソッドを使用して値を取得することですGetCellValue( 「WinGrid パフォーマンス ガイド」を参照) 。

次に、のコードを次のInitializeRowように変更できます

private void grdPeople_InitializeRow(object sender, InitializeRowEventArgs e)
{
    UltraGridColumn c = e.Row.Band.Columns["NoSMS"];
    object o = e.Row.GetCellValue(c) ?? false;
    bool noSMS = Convert.ToBoolean(o);

    if (noSMS)
    {
        e.Row.Appearance = grdPeople.DisplayLayout.Appearances["disabled_row"];
        foreach(UltraGridCell c in e.Row.Cells)
            c.SelectedAppearance = grdPeople.DisplayLayout.Appearances["disabled_row"];
    }
}

Infragistics ヘルプ ページの条件付き書式も確認してください(ただし、これはセル単位でしか機能しません)。

于 2013-03-28T12:08:55.197 に答える