在 DevExpress PivotGridControl 中使用 DisplayNameAttribute

Using DisplayNameAttribute in DevExpress PivotGridControl

有没有办法使用为每个 属性 定义的 [DisplayName] 作为 PivotGridControl 中的字段?

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

使用以下代码导致将 IdNum 显示为 Pivot Fields,但我希望显示 Identifire Number 而不是:

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

您可以将显示名称分配给 Caption property of the 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 中对我来说运行正常。或者,考虑对必填字段使用 Data Annotation Attributes instead. Apply DisplayAttribute