feat : ajout de la page "liste de questions"

pages_listes
Damien NORTIER 2 years ago
parent 8980c31462
commit 9c402bb5ce

@ -0,0 +1,19 @@
@page "/questions"
@using Blazor.Models;
@using Blazorise.DataGrid
<h3>Questions</h3>
<DataGrid TItem="Question"
Data="@questions"
ReadData="@OnReadData"
TotalItems="@totalItem"
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="Question" Field="@nameof(Question.Id)" Caption="#" />
<DataGridColumn TItem="Question" Field="@nameof(Question.IdChapter)" Caption="# chapter" />
<DataGridColumn TItem="Question" Field="@nameof(Question.IdAnswerGood)" Caption="# correct aswer" />
<DataGridColumn TItem="Question" Field="@nameof(Question.Content)" Caption="Display content" />
<DataGridColumn TItem="Question" Field="@nameof(Question.Difficulty)" Caption="Difficulty" />
<DataGridColumn TItem="Question" Field="@nameof(Question.nbFails)" Caption="Number of fails" />
</DataGrid>

@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Components;
using Blazor.Models;
using Blazorise.DataGrid;
namespace Blazor.Pages
{
public partial class Questions
{
public List<Question> questions;
private int totalItem;
[Inject]
public HttpClient Http { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Question> e)
{
if (e.CancellationToken.IsCancellationRequested)
{
return;
}
// When you use a real API, we use this follow code
//var response = await Http.GetJsonAsync<Item[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
var response = (await Http.GetFromJsonAsync<Question[]>($"{NavigationManager.BaseUri}fake-question.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
if (!e.CancellationToken.IsCancellationRequested)
{
totalItem = (await Http.GetFromJsonAsync<List<Question>>($"{NavigationManager.BaseUri}fake-question.json")).Count;
questions = new List<Question>(response); // an actual data for the current page
}
}
}
}
Loading…
Cancel
Save