Am creat o documentație aplicație în care permit ca persoane din interiorul meu de afaceri pentru a accesa documentația cu privire la anumite programe. Cu asta, am o pagină în cazul în care orice admin poate gestiona categorii și utilizatori. Pentru acest lucru, vreau admin pentru a fi capabil de a schimba ordinea de o categorie în care ar trebui să fie afișate pe NavigationMenu. Acum, partea în care ar trebui să în mod corespunzător pentru categoriile pe baza de Comanda in interiorul NavigationMenu funcționează. Dar când m-am încercați să editați categoriile existente și numere de ordine, ordinele nu se va actualiza în mod corespunzător, vezi acest exemplu:
Aceasta este înainte de editare categorii existente, aceste categorii sunt proaspăt adăugat/făcut
Acest lucru este după editarea categorii, "Reacționează" ar trebui să fie de Ordinul 2, în cazul în Care API ar fi de Ordinul 0, și de Testare ar fi Scopul 1
După cum puteți vedea, ordinea nu mai are sens. Evident, nu ar fi permis mai mult de 1 din orice ordine.
Acum, problema este cel mai probabil vine de la acest cod.
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;
}
Ordinea de cod merge ca aceasta:
CategoryDialog.aparat de ras
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);
}
}
Codul de mai sus este numit după o apăsare de buton. Acesta trece de-a lungul o categorie cu un anumit număr de ordine, acest număr devine trecut de-a lungul de la un simplu meniu vertical.
La SaveCategory
funcția arată astfel:
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;
}
Această funcție solicită problematică funcția de fapt, înainte de salvarea/adăugând ceva la baza de date. Deci, aceasta poate avea loc pentru nou adăugate sau editate categorie.
După aceasta, un Eveniment este concediat de a notifica mea NavigationMenu că nu au fost modificări de făcut, și ar trebui să re-face să arate acest lucru. Acest lucru nu are probleme.
Dar nu-mi dau seama cum aș cum trebuie Ordinele fi listate atunci când am schimba-le. Memento rapid, această funcție nu funcționează atunci când editarea categoriilor existente. Dacă aș adăuga o nouă categorie, de exemplu, la ordinul 2. O face corect schimbul totul cu nici o problema.
Orice ajutor este binevenit!
CategoryService.cs
Aceasta este o singură sursă de adevăr, atunci cândGetCategories
este chemat, se apucă noi informatii din baza de date.