Ich habe überprüft, dass keine XAML-Bindungsfehler vorliegen Es liegen keine verbindlichen Fehler im Antrag vor. Aus verbindlicher Sicht scheint alles in Ordnung zu sein, aber die Mitgliederliste wird nicht wie erwartet angezeigt, nachdem zu den Details eines Mitglieds navigiert wurde.
Erwartetes Verhalten:
Wenn ich ein Mitglied auswähle, erwarte ich, dass die Liste der mit diesem Mitglied verknüpften Mitgliedschaften angezeigt wird.
Tatsächliches Verhalten:
Die Mitgliederliste wird jedoch nicht angezeigt Ich kann Mitgliedschaften erstellen, aktualisieren und löschen für das Mitglied. Nach der Auswahl eines Mitglieds werden jedoch keine Mitgliedschaften in der Liste angezeigt.
Ich habe einige Nachforschungen angestellt, als ich versuchte, die GetMemberMembershipsAsync-Methode zu debuggen. Der Zählwert wird als 0 angezeigt. Dies zeigt an, dass keine Daten aus der Datenbank abgerufen werden, obwohl ich erwarte, dass Ergebnisse zurückgegeben werden. Es werden also keine Mitgliedschaften erstellt.
Das ist die Methode, die nicht funktioniert:
Code: Select all
````
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);
}
````
Code: Select all
using YourAppNamespace.Models;
namespace YourAppNamespace;
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("Error", "First and Last name are required", "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);
var membership = await App.Database.GetMemberMembershipsAsync(member.MembershipID);
await DisplayAlert("Success", "Membership has been associated with the member.", "OK");
}
};
}
else
{
await DisplayAlert("Error", "BindingContext is not set as Member.", "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 is not set to a Member.", "OK");
}
}
}
````
````
using YourAppNamespace.Models;
namespace YourAppNamespace;
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)
{
if (listView.SelectedItem is Membership selectedMembership)
{
var member = new Member();
await App.Database.SaveMemberAsync(member);
selectedMembership.Members ??= new List();
selectedMembership.Members.Add(member);
await DisplayAlert("Success", "Member added successfully", "OK");
await Navigation.PopAsync();
}
else
{
await DisplayAlert("Error", "Please select a membership before adding a member.", "OK");
}
}
}````