pagination with command

master
Mathis RIBEMONT 2 years ago
parent 155670e292
commit 8fc0bd8214

@ -14,17 +14,9 @@ namespace ClientMAUI.VMApp
public DataManagerVM DataManagerVM { get; private set; }
public ICommand NextPageCommand { get; private set; }
public ICommand PreviousPageCommand { get; private set; }
public ChampionListPageVM(DataManagerVM dataManager)
{
DataManagerVM = dataManager;
NextPageCommand = new Command(
execute: () => DataManagerVM.PageId++
);
PreviousPageCommand = new Command( execute: () => DataManagerVM.PageId-- );
}
}
}

@ -37,9 +37,9 @@
</ListView>
<HorizontalStackLayout HorizontalOptions="Center">
<Button Text="&lt;" Command="{Binding PreviousPageCommand}"/>
<Button Text="&lt;" Command="{Binding DataManagerVM.PreviousPageCommand}"/>
<Label Text="{Binding DataManagerVM.PageId}" Padding="5"/>
<Button Text="&gt;" Command="{Binding NextPageCommand}"/>
<Button Text="&gt;" Command="{Binding DataManagerVM.NextPageCommand}"/>
</HorizontalStackLayout>
</VerticalStackLayout>

@ -1,6 +1,8 @@
using LolToolkit;
using Microsoft.Maui.Controls;
using Model;
using System.Collections.ObjectModel;
using System.Windows.Input;
namespace VM
{
@ -17,6 +19,8 @@ namespace VM
{
_pageId = value;
OnPropertyChanged();
(PreviousPageCommand as Command).ChangeCanExecute();
(NextPageCommand as Command).ChangeCanExecute();
LoadData();
}
}
@ -24,6 +28,19 @@ namespace VM
}
public int _pageId = 1;
public int PageSize { get; set; } = 5;
public int NbItem
{
get => _nbItem;
set
{
if( _nbItem != value)
{
_nbItem = value;
OnPropertyChanged();
}
}
}
public int _nbItem;
public IDataManager DataManager
{
@ -38,16 +55,29 @@ namespace VM
}
private IDataManager _dataManager;
public ICommand NextPageCommand { get; private set; }
public ICommand PreviousPageCommand { get; private set; }
public DataManagerVM(IDataManager dataManager)
{
DataManager = dataManager;
ChampionVMs = new ReadOnlyObservableCollection<ChampionVM>(ChampionsObs);
NextPageCommand = new Command(
execute: () => { PageId++; },
canExecute: () => { return NbItem - (PageSize * (PageId-1)) > PageSize ; }
);
PreviousPageCommand = new Command(
execute: () => { PageId--; },
canExecute: () => { return PageId > 1; }
);
}
public async void LoadData()
{
ChampionsObs.Clear();
IEnumerable<Champion?> champions = await DataManager.ChampionsMgr.GetItems(PageId - 1, PageSize);
NbItem = await DataManager.ChampionsMgr.GetNbItems();
IEnumerable<Champion> champions = await DataManager.ChampionsMgr.GetItems(PageId - 1, PageSize);
foreach (var item in champions)
{
ChampionsObs.Add(new ChampionVM(item));

Loading…
Cancel
Save