Vytvářím dokumentaci aplikace, ve které jsem, umožňuje lidem uvnitř mé podnikání pro přístup k dokumentaci o určitý software. S tímto, mám stránku, kde každý admin může spravovat kategorie a uživatele. Za to, chci admin, aby bylo možné změnit pořadí kategorie, ve které by měly být zobrazeny na můj NavigationMenu. Teď ta část, kde by to mělo správně pořadí kategorií na základě Objednávky uvnitř NavigationMenu funguje. Ale když se snažím upravit stávající kategorie a jejich pořadí čísel, objednávky nebude aktualizovat odpovídajícím způsobem, viz tento příklad:
To je před úpravou stávajících kategorií, tyto kategorie jsou čerstvě přidané/
Tohle je po úpravě kategorií, "Reagovat", by mělo být Pořadí 2, Kde API by být Cílem 0, a Test by bylo Pořadí 1
Jak můžete vidět, aby už nedává smysl. Samozřejmě, nemělo by být dovoleno více než 1 z jakékoliv objednávky.
Nyní, problém je s největší pravděpodobností pocházející z tohoto kodexu.
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;
}
Pořadí kód vypadá takto:
CategoryDialog.břitva
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);
}
}
Výše uvedený kód je volána po stisknutí tlačítka. To prochází podél kategorie s určitým pořadovým číslem, toto číslo předává z jednoduchého rozbalovacího menu.
Na SaveCategory
funkce vypadá takto:
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;
}
Tato funkce volá problematické funkce, než ve skutečnosti ukládání/přidat něco do databáze. Takže to může trvat místo na nově přidané nebo upravené kategorie.
Po této Události dostane padáka oznámit můj NavigationMenu, že tam byly změny provedeny, a je třeba re-render na show. To nemá žádné problémy.
Ale nemůžu přijít na to, jak bych správně mít Objednávek být uvedeny, když jsem je změnit. Rychlé připomenutí, tato funkce nefunguje při editaci stávající kategorie. Pokud bych přidat novou kategorii, například v pořadí 2. To dělá správně posunout vše bez problému.
Jakákoliv pomoc je vítána!
CategoryService.cs
To je jediný zdroj pravdy, kdyžGetCategories
volána, chytne nové info z databáze.