을 삽입하려고/목록을 정렬 기반의'주문'값

0

질문

내가 만드는 문서를 응용 프로그램에서는 사람들 안에 내 비즈니스에 액세스 설명서에 대한 특정 소프트웨어입니다. 이 페이지가 있는 곳에는 어떤 관리할 수 있는 카테고리를 관리하고 사용자. 이를 위해,나는 관리자를 변경할 수 있도록 주문의 범주에는 그것이 있어야에 표시되는 내 NavigationMenu. 지금 일부는 그것이 제대로 작동해야 하기 위해 카테고리에 따기 위해 내부에 NavigationMenu 작동합니다. 그러나 시도할 때 편집하는 기존의 종류와 순서 번호,주문 업데이트하지 않습니다 따라서,아래 예제를 확인하십시오.

이것은 전에 편집하는 기존의 카테고리,이러한 범주는 신선한 추가/품 New categories

이것은 이후 편집,카테고리"반응해야한다"순서 2 곳,API 것 0 기 위해,그리고 테스트하는 것기 위해 1 Edited categories

당신이 볼 수있는,주문이 되지 않습니다 더 이상. 분명이 없이 허용되는 1 개 이상의 어떤 순서입니다.

지금 문제는 대부분에서 나오는 이 코드입니다.

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;
        }

주문 코드의는 다음과 같이 간다:

CategoryDialog.razor

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);
        }
    }

위의 코드가 호출한 후 버튼을 누릅니다. 이에 따라 통과 범주 특정 주문번호,이 번호를 전달을 따라에서 간단한 드롭다운 메뉴입니다.

SaveCategory 함수는 다음과 같습니다:

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;
        }

이 함수 호출 문제가 기능 실제로 전에 절약/아무것도 추가 데이터베이스에 있습니다. 그래서 그것은 자리를 차지할 수 있습니다 새로 추가 또는 편집니다.

이 후에는 이벤트가 발생하에게 통지 NavigationMenu 는 변경되어있어,그리고 그것은 다시 렌더링하는 표시이다. 이것은 아무 문제 없습니다.

그러나 나는 방법을 알아낼 수 없습니다 내가 제대로 가면 주문이 나열할 때 나는 변경합니다. 빠른 알림이 기능이 작동하지 않을 편집할 때 기존 범주가 있습니다. 를 추가 하는 경우 새로운 카테고리에서 예를 들어 주문 2. 그것이 제대로 모든 이동과 아무 문제 없습니다.

어떤 도움을 환영합니다!

.net c# entity-framework
2021-11-23 11:52:48
1

최고의 응답

0

그렇다면 사용하려고 한다면 두 번째로 말하기 위해 2,그것을 줄일 것입 주문 번호를 하는 것이었을까?

귀하의 반복 논리를 지원하지 않는 것이기 때문에,당신의 루프가 증가하고 그래서 시간에 의해 그런 일이 이미 이전을 통과 그래서 당신은 아마 더블룸 1,다.

난 당신을 얻을하려는 경우 변경 루프를 실행하는 아래처럼 당신의 아래로 밀어지만,분명히 당신이 지원하기 위해 아래로 빨리는 항상 지원

하기:

for (int i = Categories.Count() -1; i >-1; i--)
{
    if (Categories[i].Order <= category.Order)
    {
        Categories[i].Order = Categories[i].Order--;
    }
}

그러나 모든 것을 이해하고 실행하지 않에서 이 제안을 밀어 주문 대신하기 때문에 긍정적인 높은 번호를 동일하지 않은 문제를 모서리에서 그렇게 말

또는 대신:

for (int i = 0; i < Categories.Count(); i++)
{
    if(Categories[i].Order < category.Order) continue;
    Categories[i].Order = Categories[i].Order++;
}

궁극적으로도하지 않는 한 당신의 구현을 다른 나,당신이 상상하고 싶을 것이 실제로 추가하는 새로운 카테고리지(제외 thew 보낸 새로운)시

--FROM: await categoryRepository.InsertAsync(Categories);
--TO:
await categoryRepository.InsertAsync(category);
2021-11-23 12:22:15

우리가 먼저 2 한 솔루션이지만,이것이 순서대로 남아있는 0 에서 새로 만들 때 범주가 있습니다. 난 정말 무엇을 마지막 솔루션 않습니다. 그러나 도움이 된다면"카테고리는"안에 목록 CategoryService.cs 이것은 단일 원본의 진실 때, GetCategories 라,그것을 잡고 새로운 정보를 데이터베이스에서.
Rowin

@록우드 화이트리버 아,마지막으론 당신이 원하는 무엇을 삽입하는 새로운 카테고리 전체 범주 목록 내 포함되지 않은 아무것도에 대한 실제로 저장 바뀌었습니다. 이제 당신은 이미 마을. 그래서 내가 또한 추정 순서의 범주의 매개 변수는 이미 올바르게 설정으로 인해 귀하의 비교를 그리고 우리가 보지 못하는 방법을 설정합니다. 당신은 그것을 설정이 이미 부르기 전에 SaveCategory 다음? 우리가하지 않 manupulate 매개 변수이지만 단순히 그것으로만 가능성이 항상 0?
T. Nielsen

에서 값 순서에서 드롭다운 메뉴에서는 U 에서 선택할 수 있습 0 현재의 금액 카테고리,또는 때 하나를 만드,0~현재의 금액을 종류+1 입니다. 그것은에게 전달되는 SaveCategory. 내가 무엇을 하려고,지금은 만들기"새로운"목록입니다. 모든 것이 바뀌게소를 위한 새로운 카테고리입니다. 그 후에 그것의 저장되고 실제 데이터베이스에 추가됩니다. 이 경우 새로운 카테고리를 만들고,그러나 편집할 때 기존 문서는이지 않는 이동까지 따라에 남아 있을 올바른 순서를 지정할 수 있습니다.
Rowin

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................