Je suis entrain de créer une documentation de l'application dans laquelle j'permettre à des personnes à l'intérieur de mon entreprise pour accéder à la documentation sur certains logiciels. Avec cela, j'ai une page où tout administrateur peut gérer les catégories et les utilisateurs. Pour cela, je veux de l'admin pour être en mesure de modifier l'ordre d'une catégorie dans laquelle il doit être affiché sur mon NavigationMenu. Maintenant, la partie où il doit commander correctement les catégories en se basant sur l'Ordre à l'intérieur de la NavigationMenu œuvres. Mais quand j'essaie de modifier les catégories existantes et de leurs numéros de commande, les commandes ne seront pas à jour en conséquence, voir cet exemple:
C'est avant de modifier les catégories existantes, ces catégories sont fraîchement ajoutée/fait
C'est après l'édition des catégories, "Réagir" devrait être de l'Ordre de 2, Où API serait de l'Ordre de 0, et de Tester serait de l'Ordre de 1
Comme vous pouvez le voir, l'ordre n'a plus aucun sens. Évidemment, il ne devrait pas être permis à plus de 1 de n'importe quel ordre.
Maintenant, le problème est probablement à venir à partir de ce code.
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'ordre du code, qui va comme ceci:
CategoryDialog.rasoir
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);
}
}
Le code ci-dessus est appelée après l'appui sur un bouton. Cela passe le long d'une catégorie avec un certain ordre, ce nombre est transmis le long à partir d'un simple menu déroulant.
L' SaveCategory
la fonction ressemble à ceci:
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;
}
Cette fonction appelle la problématique de la fonction avant la sauvegarde/rien ajouter à la base de données. Ainsi il peut prendre place pour la nouvelle d'ajouter ou de modifier de la catégorie.
Après cela, un Événement est déclenché pour notifier mon NavigationMenu que des changements ont été apportés, et il doit rendre à nouveau de le montrer. Cela n'a pas de problèmes.
Mais je ne vois pas comment je pourrais correctement les Ordres de figurer dans la liste lorsque je les change. Petit rappel, cette fonction ne fonctionne pas lors de la modification des catégories existantes. Si j'avais ajouter une nouvelle catégorie, par exemple à l'ordre 2. Il n'correctement maj à tout sans problème.
Toute aide est la bienvenue!
CategoryService.cs
C'est une source unique de la vérité, quandGetCategories
est appelé, il s'empare de nouvelles informations à partir de la base de données.