Ja som vytváranie dokumentácie aplikáciu, v ktorej som, aby ľudia vo vnútri môjho podnikania na prístup k dokumentácii o určitý softvér. S týmto som stránku, kde všetky admin môžete spravovať kategórie a užívateľov. Pre toto, chcem admin, aby ste mohli zmeniť poradie kategórie, v ktorých by mali byť zobrazené na mojom NavigationMenu. Teraz, v časti, kde by mal správne poradie kategórií na základe Objednávky vo vnútri NavigationMenu funguje. Ale keď som sa pokúsiť upraviť existujúce kategórie a ich poradie čísla objednávky, nebude aktualizovať podľa toho, pozri tento príklad:
Toto je pred úpravou existujúcich kategórií, tieto kategórie sú čerstvo pridal/vyrobené
To je po úprave kategórie,, "Reagovať" treba Objednať 2, Kde API by Poradí 0, a Test by byť Poriadok 1
Ako môžete vidieť, aby nemá zmysel už. Samozrejme, tam by nemali byť povolené viac ako 1 z každej objednávke.
Teraz, problém je pravdepodobne pochádzajúce z tohto kódexu.
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;
}
Poradie kód vyzerá takto:
CategoryDialog.britva
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);
}
}
Vyššie uvedený kód je volaná po tlačidlo stlačte tlačidlo. Tento prechádza pozdĺž kategórie s určitom poradí číslo, toto číslo sa dostane vyplavujú z jednoduchého roletového menu.
Na SaveCategory
funkcie vyzerá 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;
}
Táto funkcia vyžaduje problematické funkcia predtým, než v skutočnosti uloženie/pridaním nič databázy. Takže to môže trvať miesto pre novo pridané alebo upravené kategórie.
Po tomto, Udalosť, dostane padáka oznámiť môj NavigationMenu, že tam boli zmeny vykonané, a to by re-render to dokázať. To nemá žiadne problémy.
Ale nemôžem prísť na to, ako by som správne mať Objednávky byť uvedené keď som ich zmeniť. Rýchle upomienku, táto funkcia nefunguje pri úprave existujúcich kategórií. Ak by som pridať novú kategóriu, napríklad na objednávku 2. To robí správne shift všetko bez problémov.
Každá pomoc je vítaná!
CategoryService.cs
Toto je jediný zdroj pravdy, keďGetCategories
dostane názov, to chytí nové informácie z databázy.