Tworzę aplikację do dokumentacji, w którym uczestniczę ludziom w moim biznesie dostęp do dokumentacji określonego oprogramowania. Dzięki temu mam strona, na której każdy administrator może zarządzać kategoriami i użytkownikami. Do tego chcę, aby administrator mógł zmienić kolejność kategorii, w której powinna pojawić się w moim menu nawigacji. Teraz działa ta część, gdzie powinien prawidłowo organizować kategorii na podstawie kolejności wewnątrz menu nawigacji. Ale gdy próbuję edytować istniejące kategorie i ich numery zamówień, zamówienia nie są aktualizowane odpowiednio, patrz przykład Ten:
Odbywa się to przed edycją istniejących kategorii ostatnio dodane/wykonane
To po edycji kategorii "Reagować" powinno być rzędu 2, gdzie API będzie porządek 0, a test będzie kolejność 1
Jak widać, rozkaz więcej nie ma sensu. Oczywiście, że nie powinno być dozwolone ponad 1 każdego zamówienia.
Teraz problem jest najprawdopodobniej związany z tym kodem.
CategoryService.cs
public async Task<List<Category>> InsertCategory(Category category)
{
await GetCategories();
for (int i = 0; i < Categories.Where(c => c.Order >= category.Order).Count(); i++)
{
Categories[i].Order++;
if (Categories[i].Order == category.Order)
{
Categories[i].Order--;
break;
}
}
await categoryRepository.InsertAsync(Categories);
EventHelper.NotifyCategoryListChanged(Categories, EventArgs.Empty);
return Categories;
}
Kolejność kodu wygląda następująco:
Katalog kategorii.brzytwa
private async void SaveCategory(Category category)
{
if(!string.IsNullOrEmpty(category.Name))
{
await categoryService.SaveCategory(category);
Snackbar.Add("Category " + category.Name + " added", Severity.Success);
MudDialog.Close(DialogResult.Ok(category.Id));
}
else
{
Snackbar.Add("Please enter a category name.", Severity.Warning);
}
}
Powyższy kod jest wywoływany po naciśnięciu przycisku. To przekazuje kategorię z określonym numerem zamówienia, numer ten jest przekazywany z prostego menu rozwijanego.
To SaveCategory
funkcja wygląda tak:
CategorySerice.cs
public async Task<Category> SaveCategory(Category category)
{
await InsertCategory(category);
if (categoryRepository.GetByIdAsync(category.Id) == null)
{
await categoryRepository.AddAsync(category);
}
else
{
await categoryRepository.SaveAsync(category);
}
EventHelper.NotifyCategoryListChanged(Categories, EventArgs.Empty);
return category;
}
Funkcja ta powoduje niewłaściwą funkcji przed faktycznym zachowaniem/dodanie czegoś do bazy danych. W ten sposób, to może się zdarzyć dla nowo dodanej lub edytowanej kategorii.
Po tym uruchamia zdarzenie, informujący moje menu nawigacji o tym, że zostały wprowadzone zmiany, i musi ponownie wyświetlane, aby pokazać to. W tym nie ma żadnych problemów.
Ale nie mogę zrozumieć, jak prawidłowo wskaże Zamówienia, gdy ja je zmienię. Szybkie przypomnienie, ta funkcja nie działa podczas edytowania istniejących kategorii. Gdyby dodałem nową kategorię, na przykład, przy zamówieniu 2. On poprawnie przenosi wszystko bez problemów.
Każda pomoc jest mile widziane!
CategoryService.cs
To jedyne źródło prawdy, gdyGetCategories
dostaje wyzwanie, otrzymuje nowe informacje z bazy danych.