Estoy creando una aplicación documentación en la que me permiten a las personas dentro de mi negocio para acceder a la documentación acerca de cierto tipo de software. Con esto, tengo una página donde cualquier administrador puede gestionar categorías y usuarios. Para esto, quiero que el admin para ser capaz de cambiar el orden de una categoría en la que se debe mostrar en mi NavigationMenu. Ahora, la parte donde debe ordenar correctamente las categorías en función del Orden en el interior de la NavigationMenu obras. Pero cuando intento editar las categorías existentes y sus números de pedido, los pedidos no se actualizará en consecuencia, vea este ejemplo:
Esto es antes de la edición de las categorías existentes, estas categorías están recién agregado/hecho
Esto es después de la edición de las categorías, "Reaccionar" debe ser de Orden 2, Donde API sería el Orden 0, y la Prueba sería de Orden 1
Como se puede ver, el orden no tiene sentido ya. Obviamente, no debería haber permitido que más de 1 de cualquier orden.
Ahora, el problema es más probable llegar a partir de este código.
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;
}
La orden de el código va como esto:
CategoryDialog.maquinilla de afeitar
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);
}
}
El código de arriba es llamado después de que se pulse un botón. Este pasa a lo largo de una categoría con un cierto número de orden, este número se pasa a lo largo de un simple menú desplegable.
El SaveCategory
la función se parece a esto:
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;
}
Esta función llama a la problemática de la función antes de guardar, agregar nada a la base de datos. Por lo que pueden tener lugar para el recién agregado o editado categoría.
Después de esto, el Evento se despidió para notificar a mi NavigationMenu que ha habido cambios realizados, y se debe volver a renderizar para mostrar esto. Este no tiene problemas.
Pero yo no puedo entender cómo me gustaría tener las Órdenes que aparecen cuando me cambie. Rápido recordatorio, esta función no funciona cuando la edición de las categorías existentes. Si que me gustaría añadir una nueva categoría, por ejemplo, en la orden 2. Se hace adecuadamente cambio de todo sin problema.
Cualquier ayuda es bienvenida!
CategoryService.cs
Esta es una fuente única de la verdad, cuandoGetCategories
se llama, toma de nuevo la información de la base de datos.