我有这两个班级:
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!进行分组,这是一个不同的集合
答案 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指定另一个属性。