PagedViewCollection группировать по столбцам, а не по свойствам - PullRequest
5 голосов
/ 29 апреля 2011

У меня есть 2 класса:

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; }     
}

У меня есть коллекция DocRegHour, связанная с источником данных DataGrids. Я хочу, чтобы они были сгруппированы по GroupTypeID, как вы можете видеть, что у 2 классов есть 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 ]

1 голос
/ 03 мая 2011

Ваша проблема в том, что PropertyGroupDescriptor ожидает, что propertyName группирует элементы, а не заголовок столбца для группировки.

Ваш класс DocRegHour не имеет свойства с именем "Group", поэтому PagedCollectionView не может сгруппировать элементы по этому свойству.

Чтобы решить эту проблему, добавьте свойство" Группа "в свой класс или укажите другое свойство для PropertyGroupDescriptor.

1 голос
/ 29 апреля 2011

Если вы делаете:

// 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);

Это должно работать. Я не совсем уверен, хотя я понял вашу модель данных. Однако я обнаружил, что анонимные типы очень удобны, когда дело доходит до подобных ситуаций:)

...