İşletmemdeki kişilerin belirli yazılımlarla ilgili belgelere erişmesine izin verdiğim bir dokümantasyon uygulaması oluşturuyorum. Bununla, herhangi bir yöneticinin kategorileri ve kullanıcıları yönetebileceği bir sayfam var. Bunun için yöneticinin Gezinme menümde görüntülenmesi gereken bir kategorinin sırasını değiştirebilmesini istiyorum. Şimdi, NavigationMenu içindeki Siparişe göre kategorileri düzgün bir şekilde sipariş etmesi gereken kısım çalışıyor. Ancak mevcut kategorileri ve sipariş numaralarını düzenlemeye çalıştığımda siparişler buna göre güncellenmeyecek, bu örneğe bakın:
Bu, mevcut kategorileri düzenlemeden önce, bu kategoriler yeni eklenir / yapılır
Bu, kategorileri düzenledikten sonra," React " Sipariş 2 olmalıdır, Burada API Sipariş 0 olur ve Test Sipariş 1 olur
Gördüğünüz gibi, emir artık mantıklı değil. Açıkçası, herhangi bir siparişin 1'inden fazlasına izin verilmemelidir.
Şimdi, sorun büyük olasılıkla bu koddan geliyor.
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;
}
Kodun sırası şöyle::
KategoriDialog.jilet
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);
}
}
Yukarıdaki kod bir düğmeye basıldıktan sonra çağrılır. Bu, belirli bir sipariş numarasına sahip bir kategori boyunca geçer, bu sayı basit bir açılır menüden iletilir.
Bu SaveCategory
işlev şöyle görünür:
KategoriSerice.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;
}
Bu işlev, veritabanına herhangi bir şey kaydetmeden/eklemeden önce sorunlu işlevi çağırır. Böylece yeni eklenen veya düzenlenen kategori için gerçekleşebilir.
Bundan sonra, navigationmenu'ma değişiklikler yapıldığını bildirmek için bir Olay tetiklenir ve bunu göstermek için yeniden oluşturulmalıdır. Bu herhangi bir sorun vardır.
Ama değiştirdiğimde Emirlerin nasıl düzgün bir şekilde listelenmesini sağlayacağımı anlayamıyorum. Hızlı hatırlatma, mevcut kategorileri düzenlerken bu işlev çalışmaz. Örneğin 2. sırada yeni bir kategori eklersem. Düzgün hiçbir sorun shift her şeyi yapar.
Herhangi bir yardım açığız!
CategoryService.cs
Bu tek bir hakikat kaynağıdır, ne zamanGetCategories
çağrıldığında veritabanından yeni bilgiler alır.