PagedViewCollection按列分组,而不是属性

时间:2011-04-29 11:20:35

标签: c# .net silverlight group-by

我有这两个班级:

class EmpIDPayTypeSettings
{
    public Guid OID { get; set; }
    public Guid PayTypeOID { get; set; }
    public int GroupTypeID { get; set; }
    public Guid EmpOID { get; set; }
    public int OrderBy { get; set; }
}

class DocRegHour
{
    public Guid OID { get; set; }              
    public Guid DocumentOID { get; set; }    
    public Guid medarbejderOID { get; set; } 
    public Guid PaytypeOID { get; set; }     
    public string PayTypeInfo { get; set; }
    public double Hours { get; set; }
    public string Comment { get; set; }  
    public DateTime CreatedDate { get; set; }
    public DateTime LastChangedDate { get; set; }     
}

我有一个绑定到DataGrids项目源的DocRegHour集合。 我希望它们按GroupTypeID分组,因为您可以看到这两个类共有PaytypeOID个。

我尝试使用Header = "Group"创建一个未绑定的折叠列,并在每行中将GroupTypeID设置为文本。 然后我写道:

var pcv = new PagedCollectionView(dataGridDayView.ItemsSource);
pcv.GroupDescriptions.Add(new PropertyGroupDescription("Group"));
dataGridDayView.ItemsSource = pcv;

虽然不起作用。有什么帮助吗?

澄清。我有:

IEnumerable<DocRegHour> data;
IENumerable<EmpIDPayTypeSettings> userSettings;

var pcv = new PagedCollectionView(data);
dataGridDayView.ItemsSource = pcv;

我想通过GroupTypeID!进行分组,这是一个不同的集合

2 个答案:

答案 0 :(得分:1)

如果你这样做:

// LINQ the stuff you need and then group by the name you give it
myData.Where(...).Select(emp => new { Group = emp.GroupTypeID });

GroupDescriptor descriptor = new GroupDescriptor("Group");
pcv.GroupDescriptors.Add(descriptor);

它应该工作。虽然我理解你的数据模型,但我并不完全确定。但是我发现匿名类型在类似的情况下非常方便:)

答案 1 :(得分:1)

您的问题是PropertyGroupDescriptor期望propertyName按项目分组,而不是要分组的列标题。

您的类DocRegHour没有名为“Group”的属性,因此PagedCollectionView无法按此属性对项目进行分组。

要解决此问题,请在您的类中添加属性“Group”,或为PropertyGroupDescriptor指定另一个属性。