Estuve modificando el codigo para hacerlo mas simple e intentar que se entienda bien. Como verán he probado con un foreach, con Data Grid con datos simples, y el ultimo, el data grid con una coleccion de datos "creados" en el momento, que seria la clase PND_HORAS.
Dejo al final la imagen como se ve en pantalla
@page "/pnd"
@using Sigea.Modelo.Models;
@inject IAsistenciaSigeaService asistenciaService
@inject IPNDService PNDService
@using System.Collections.ObjectModel;
<div>
<h1>this foreach get al vallues and show correctly</h1>
<p>
@{
int count = 0;
foreach (PND_HORAS item in listaPndHoras)
{
if (count >= 10) break;
<a>Nombre: @item.Personal.Nombre</a>
<a>horas Trabajadas: @item.HorasTrabajadas </a>
count++;
}
}
</p>
</div>
<div><h1>This Radzen DataGrid the Data show correctly </h1></div>
<RadzenDataGrid TItem="PersonalNoDocente" Data="personalNoDocentes">
<Columns>
<RadzenDataGridColumn TItem="PersonalNoDocente" Property="Nombre" Title="Nombre" />
<RadzenDataGridColumn TItem="PersonalNoDocente" Property="Dni" Title="DNI" />
</Columns>
</RadzenDataGrid>
<h1>THIS DATA GRID SHOWS NOTHING </h1>
<RadzenDataGrid TItem="PND_HORAS" Data="@listaPndHoras2">
<RadzenGridColumn TItem="PND_HORAS" Title="Nombre">
<Template Context="pndHoras">
@pndHoras.Personal.Nombre
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="PND_HORAS" Title="Días trabajados">
<Template Context="pndHoras">
@pndHoras.DiasTrabajados
</Template>
</RadzenGridColumn>
<RadzenGridColumn TItem="PND_HORAS" Title="Horas trabajadas">
<Template Context="pndHoras">
@pndHoras.HorasTrabajadas
</Template>
</RadzenGridColumn>
</RadzenDataGrid>
@code {
IEnumerable<PersonalNoDocente> personalNoDocentes;
List<PND_HORAS> listaPndHoras = new List<PND_HORAS>();
IEnumerable<PND_HORAS> listaPndHoras2 = new ObservableCollection<PND_HORAS>();
protected override async Task OnInitializedAsync()
{
// Obtener los datos de la entidad PersonalNoDocente
personalNoDocentes = await PNDService.TraerLista();
personalNoDocentes = personalNoDocentes.Take(10);
foreach (var pnd in personalNoDocentes)
{
var diasTrabajados = await asistenciaService.CalcularDiasTrabajadosAsync(pnd.Id, DateTime.Now.Month, DateTime.Now.Year);
var horasTrabajadas = await asistenciaService.CalcularHorasTrabajadasAsync(pnd.Id, DateTime.Now.Month, DateTime.Now.Year);
var saldoHorario = asistenciaService.CalcularDiferenciaHoras(horasTrabajadas, diasTrabajados);
var pndHoras = new PND_HORAS
{
Personal = pnd,
DiasTrabajados = diasTrabajados,
HorasTrabajadas = horasTrabajadas,
SaldoHorario = saldoHorario
};
listaPndHoras.Add(pndHoras);
}
listaPndHoras2= listaPndHoras.ToList();
}
public class PND_HORAS
{
public PersonalNoDocente Personal { get; set; }
public int DiasTrabajados { get; set; }
public TimeSpan HorasTrabajadas { get; set; }
public TimeSpan SaldoHorario { get; set; }
}
}