2011-04-29 8 views
5

tengo estas 2 clases:grupo PagedViewCollection por la columna, no la propiedad

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

tengo una colección de DocRegHour unido a un ItemSource DataGrids. Los quiero agrupados por GroupTypeID, como se puede ver, las 2 clases tienen PaytypeOID en común.

Intenté hacer una columna colapsada sin límite con el Header = "Group" y establecí el GroupTypeID como texto en cada fila. Entonces escribió:

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

No funciona sin embargo. ¿Alguna ayuda?

Para aclarar. Tengo:

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

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

que quiero agrupar por GroupTypeID !, que está en una colección diferente

Respuesta

1

Si lo hace:

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

debería funcionar. Aunque no estoy del todo seguro, entendí tu modelo de datos. Sin embargo, encontré que los tipos anónimos son bastante útiles cuando se trata de situaciones similares :)

+0

Pero no quiero un tipo de clase mutada. Necesito extraer datos de las filas muchas veces. Tal como (SelectedItem como DocRecHour), no puedo hacer eso, con su método. Además, ¿qué pasa si la cuadrícula de datos tiene columnas dinámicas? – CasperT

+0

Ok, eso es comprensible. ¿Tienes propiedades de navegación? Si es así, puedes usarlos. – LueTm

+0

Lo siento, ¿qué son esos? No puedo encontrarlos en msdn – CasperT

1

Su problema es que el PropertyGroupDescriptor espera que el propertyName agrupe los elementos y no el encabezado de la columna para agruparlos.

Su clase DocRegHour no tiene una propiedad llamada "Grupo", por lo que el PagedCollectionView no puede agrupar elementos por esta propiedad.

Para resolver esto, agregue una propiedad "Grupo" a su clase o especifique otra propiedad para el PropertyGroupDescriptor.

Cuestiones relacionadas