Пользовательский обработчик событий RowCellStyle и экспресс-сортировка столбцов в DevExpress XtraGrid - PullRequest
4 голосов
/ 10 августа 2011

Мой xtraGrid имеет собственный список событий стиля:

  FooGridView.RowCellStyle += new DevExpress.XtraGrid.Views.Grid.RowCellStyleEventHandler(FooGridView_RowCellStyle);


  private void FooGridView_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {

            DevExpress.XtraGrid.Views.Grid.GridView vw = (sender as DevExpress.XtraGrid.Views.Grid.GridView);
            try
            {
                DataRow DR = vw.GetDataRow(vw.GetRowHandle(e.RowHandle));

                if (**some condition based on one or more values in the DataRow**)
                {
                    e.Appearance.Font = new System.Drawing.Font(e.Appearance.Font, System.Drawing.FontStyle.Strikeout);
                    e.Appearance.ForeColor = Color.LightGray;
                }
                else
                {
                    e.Appearance.Font = new System.Drawing.Font(e.Appearance.Font, System.Drawing.FontStyle.Regular);
                    e.Appearance.ForeColor = Color.Black;
                }

            }
            catch (Exception ex) { }
        }

После нажатия на заголовок столбца сетки, чтобы применить сетку, форматирование применяется к неправильным строкам после того, как строки были переупорядочены сортировкой,Как решить эту проблему?

1 Ответ

5 голосов
/ 12 августа 2011

Вы берете e.RowHandle, данное вам, и конвертируете его в DataSourceHandle. Затем вы звоните GetDataRow с DataSourceHandle.

Однако GetDataRow принимает дескриптор строки, а не дескриптор источника данных. Попробуйте это:

DataRow DR = vw.GetDataRow(e.RowHandle);
...