Использование DisplayNameAttribute в DevExpress PivotGridControl

Есть ли способ использовать [DisplayName], определенный для каждого свойства в качестве полей в PivotGridControl?

public class Dto
{
   [DisplayName("Identifier")]
   public int Id {get;set;}
   [DisplayName("Number")]
   public string Num {get;set;}
   ...
   //other properties 
}

использование следующего кода вызывает show Id и Num как Pivot Fields, но я ожидаю показать Идентификатор и Номер вместо:

IList<Dto> result = CreateDtoList();
var bsOrderItems = new BindingSource(DataSource = result);
pivotGridControl.DataSource = bsOrderItems;
pivotGridControl.RetrieveFields();

2 ответа

Решение

Вы можете назначить отображаемые имена Caption собственность field,

Например:

//using System.ComponentModel;
var properties = TypeDescriptor.GetProperties(typeof(Dto));
foreach (PropertyDescriptor p in properties)
    pivotGridControl.Fields[p.Name].Caption = p.DisplayName;

Или вы можете зациклить на pivotGridControl.Fields и для каждого PivotGridField установить подпись:

//using System.ComponentModel;
//using DevExpress.XtraPivotGrid;
var properties = TypeDescriptor.GetProperties(typeof(Dto));
foreach (PivotGridField f in pivotGridControl.Fields)
    f.Caption = properties[f.FieldName].DisplayName;

Атрибут DisplayName должен применяться правильно. Ваш код работает правильно для меня в последней версии 18.1. В качестве альтернативы рассмотрите возможность использования атрибутов аннотации данных. Примените DisplayAttribute к обязательным полям.

Другие вопросы по тегам