0
ID      Subject     Marks
1000    English       65
1000    Physics       70
1000    Chemistry     75
1001    English       78
1001    Physics       71
1001    Chemistry     60
1002    English       85
1002    Physics       80
1002    Chemistry     79

ID の値に基づいて (別の方法で) 背景色を指定したいと考えています。エントリが 1000 の場合、1000 のエントリに背景色、たとえばシアンを指定し、次に ID 1001 のエントリに別の色を指定し、1002 のエントリに同じ背景色を指定します (または別の色にすることもできます)。 1)。

以下のコードを使用しますが、背景色が正しく取得されません。背景色がシアンのグリッド内のすべての行を取得します。

何かご意見は?

private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
                    ColumnView View = dataGrid.MainView as ColumnView;
                        DevExpress.XtraGrid.Columns.GridColumn col = View.Columns["ID"];
                        for (int i = 0; i <= gridView1.DataRowCount - 1; i++)
                        {
                            if (gridView1.GetRowCellValue(i, col) != gridView1.GetRowCellValue((i + 1), col))
                            {
                                e.Appearance.BackColor = Color.LightCyan;
                            }
                        if (i == gridView1.DataRowCount) break;
                        }

        }
4

2 に答える 2

1

行ごとに RowStyle イベントが既に発生しています - http://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsGridGridView_RowStyletopic

RowStyleEventArgs e (e.RowHandle) は、RowGroups http://documentation.devexpress.com/#WindowsForms/CustomDocument695を処理するときに負になることもあります

ループの各反復は、負の値をチェックせずに e.RowHandle を使用していました。これにより、列全体の背景色が変更されていました。

以下のコードを、ID 列に基づいて偶数行に交互の行の色パターンを生成するバージョンに変更しました。

     private void dataGrid_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
    {
        if (e.RowHandle >= 0)
        {
            ColumnView View = dataGrid.MainView as ColumnView;
            DevExpress.XtraGrid.Columns.GridColumn col = View.Columns["ID"];
            if (Convert.ToInt32(gridView1.GetRowCellValue(e.RowHandle, col)) % 2 == 0)
            {
                e.Appearance.BackColor = Color.LightCyan;
            }
            else
            {
                e.Appearance.BackColor = Color.White;
            }
        }
    }
于 2013-09-05T22:26:07.830 に答える