Io sono la creazione di una documentazione di applicazione in cui ho permettere alle persone all'interno del mio business per accedere alla documentazione relativa a determinati software. Con questo, ho una pagina in cui ogni amministratore può gestire le categorie e gli utenti. Per questo, voglio admin per essere in grado di modificare l'ordine di una categoria in cui deve essere visualizzato sul mio NavigationMenu. Ora, la parte dove dovrebbe ordinare correttamente le categorie sulla base di un Ordine all'interno del NavigationMenu opere. Ma quando cerco di modificare le attuali categorie e i loro numeri d'ordine, gli ordini non si aggiorna di conseguenza, vedi questo esempio:
Questa è la prima modifica categorie esistenti, queste categorie sono appena aggiunto/fatto
Questo è dopo la modifica categorie, "Reagire" dovrebbe essere di Ordine 2, Dove le API sarebbero Ordine di 0, e la Prova sarebbe di Ordine 1
Come si può vedere, l'ordine non ha più senso. Ovviamente, non dovrebbe essere consentito più di 1 di qualsiasi ordine.
Ora, il problema è più probabile che da questo codice.
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;
}
L'ordine del codice va come questa:
CategoryDialog.rasoio
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);
}
}
Il codice sopra è chiamato dopo aver premuto il pulsante. Questo passa lungo una categoria con un certo numero di ordine, questo numero si passava da un semplice menu a discesa.
Il SaveCategory
funzione simile a questo:
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;
}
Questa funzione chiama la problematica funzione prima di salvare/aggiungere nulla al database. Così può prendere posto per la nuova aggiunta o la modifica di categoria.
Dopo questo, un Evento viene licenziato per confermare la mia NavigationMenu che ci sono stati dei cambiamenti, e questo dovrebbe re-rendering per mostrare questo. Questo non ha problemi.
Ma io non riesco a capire come avrei correttamente gli Ordini essere elencati, quando io li cambio. Breve promemoria, questa funzione non funziona quando si modifica categorie esistenti. E se volessi aggiungere una nuova categoria, per esempio, all'ordine 2. Lo fa correttamente spostamento di tutto senza alcun problema.
Qualsiasi aiuto è benvenuto!
CategoryService.cs
Questa è una singola fonte di verità, quandoGetCategories
viene chiamato, afferra nuove informazioni dal database.