C # - DevExpress XtraGrid - Мастер / Деталь - Формат отображения - PullRequest
3 голосов
/ 31 августа 2010

Сценарий

  • У меня есть DevExpress XtraGrid.
  • Отображаемые данные представлены в формате мастер / подробности, в результате чего нажатие на «+» в начале строки расширяет детали для этой главной строки.
  • Я реализовал это, привязав источник данных grids к словарю объектов, которые содержат собственное свойство Dictionary (для хранения деталей).

Задача

  • Что я хочу сделать, это отформатировать данные в определенных столбцах детали.
  • Однако я не могу получить доступ к столбцу, предположительно, потому что он является подэлементом главной строки (и поэтому не проверяется?)
  • Ниже приведены 2 примера кода тех реализаций, которые я до сих пор пробовал, которые не работают.

Решения по коду попыток

gridView1.Columns["Price"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
                gridView1.Columns["Price"].DisplayFormat.FormatString = "n4";


  private void gridView1_RowCellStyle(object sender, RowCellStyleEventArgs e)
        {
            GridView View = sender as GridView;
            if (e.Column.FieldName == "Price")
            {
                e.Column.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
                e.Column.DisplayFormat.FormatString = "n4";
            }
            }

Помощь с благодарностью.

1 Ответ

5 голосов
/ 01 сентября 2010

Чтобы отформатировать значения в подробном GridView, вы должны сначала получить экземпляр этого объекта. Практически стандартный способ сделать это - обработать обработчик событий Master GridView MasterRowExpanded. В этом обработчике событий вы также можете установить DisplayFormat столбца:

private void gridView1_MasterRowExpanded_1(object sender, CustomMasterRowEventArgs e) {
    GridView master = sender as GridView;
    GridView detail = master.GetDetailView(e.RowHandle, e.RelationIndex) as GridView;
    detail.Columns["SomeColumn"].DisplayFormat = ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...