Использование 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 к обязательным полям.