Ожидаемое поведение:
Когда я выбираю участника, я ожидаю, что будет отображен список членств, связанный с этим участником.
Фактическое поведение:
Список участников не отображается, хотя я возможность создавать, обновлять и удалять членство для член. Однако после выбора участника членство в списке не отображается.
Я провел небольшое исследование, когда пытался выполнить отладку метода GetMemberMembershipsAsync. значение счетчика отображается как 0. Это указывает на то, что данные из базы данных не извлекаются, хотя я ожидаю, что она вернет результаты. Таким образом, членство не создается.
Этот метод не работает:
Код: Выделить всё
````
public Task GetMemberMembershipsAsync(int memberid)
{
return _database.QueryAsync(
"SELECT membership.ID, membership.MembershipName FROM Membership membership " +
"INNER JOIN Member M ON M.MembershipID = membership.ID " +
"WHERE M.ID = ?", memberid);
}
````
Код: Выделить всё
namespace MauiAppBazaSportiva;
using MauiAppBazaSportiva.Models;
public partial class ListPage : ContentPage
{
public ListPage(Member member=null)
{
InitializeComponent();
BindingContext = member ?? new Member();
}
async void OnSaveButtonClicked(object sender, EventArgs e)
{
var member = (Member)BindingContext;
if(string.IsNullOrWhiteSpace(member.FirstName)||string.IsNullOrWhiteSpace(member.LastName))
{
await DisplayAlert("Eroare", "Numele si prenumele sunt obligatorii", "OK");
return;
}
await App.Database.SaveMemberAsync(member);
await Navigation.PopAsync();
}
async void OnDeleteButtonClicked(object sender, EventArgs e)
{
var member = (Member)BindingContext;
await App.Database.DeleteMemberAsync(member);
await Navigation.PopAsync();
}
async void OnChooseButtonClicked(object sender, EventArgs e)
{
var member = BindingContext as Member;
if (member != null)
{
var membershipPage = new MembershipPage(new Membership());
await Navigation.PushAsync(membershipPage);
membershipPage.Disappearing += async (s, args) =>
{
if (membershipPage.SelectedMembership != null)
{
member.MembershipID = membershipPage.SelectedMembership.ID;
await App.Database.SaveMemberAsync(member);
await DisplayAlert("Succes", "Abonamentul a fost asociat membrului.", "OK");
listView.ItemsSource = await App.Database.GetMemberMembershipsAsync(member.MembershipID);
}
};
}
else
{
await DisplayAlert("Error", "BindingContext nu este setat ca Membru.", "OK");
}
}
protected override async void OnAppearing()
{
base.OnAppearing();
if(BindingContext is Member member)
{
listView.ItemsSource = await App.Database.GetMemberMembershipsAsync(member.ID);
}
else
{
await DisplayAlert("Error", "BindingContext nu e setat catre un membru", "OK");
}
}
}
````
````
using MauiAppBazaSportiva.Models;
namespace MauiAppBazaSportiva;
public partial class MembershipPage : ContentPage
{
public Membership SelectedMembership { get; set; }
public MembershipPage(Membership membership=null)
{
InitializeComponent();
BindingContext = membership ?? new Membership();
}
async void OnSaveButtonClicked(object sender, EventArgs e)
{
if (BindingContext is Membership membership)
{
await App.Database.SaveMembershipAsync(membership);
listView.ItemsSource = await App.Database.GetMembershipsAsync();
}
else
{
await DisplayAlert("Error", "BindingContext is not set to a Membership.", "OK");
}
}
async void OnDeleteButtonClicked(object sender,EventArgs e)
{
var membership = listView.SelectedItem as Membership;
await App.Database.DeleteMembershipAsync(membership);
listView.ItemsSource = await App.Database.GetMembershipsAsync();
}
protected override async void OnAppearing()
{
base.OnAppearing();
listView.ItemsSource = await App.Database.GetMembershipsAsync();
}
async void OnAddButtonClicked(object sender,EventArgs e)
{
Membership m1;
if(listView.SelectedItem is Membership selectedMembership)
{
var member = new Member()
{
};
if(selectedMembership.Members==null)
{
selectedMembership.Members = new List();
}
await App.Database.SaveMemberAsync(member);
selectedMembership.Members ??= new List();
selectedMembership.Members.Add(member);
await DisplayAlert("Succes", "Membru adaugat cu succes","OK");
await Navigation.PopAsync();
}
else
{
await DisplayAlert("Eroare", "Te rog selecteaza un abonament inainte de adaugarea membrului.", "OK");
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-not-work
Мобильная версия