พยายามที่จะแทรก/การายชื่อจาก'คำสั่ง'ค่า

0

คำถาม

ฉันสร้างเอกสารคู่มือโปรแกรมซึ่งผมอนุญาตให้คนที่อยู่ข้างในธุรกิจของฉันเพื่อเข้าใช้งานเอกสารเรื่องซอฟต์แวร์ กับเรื่องนี้ฉันมีหน้าที่ไหนมีแอดมิสามารถจัดการหมวดหมู่และผู้ใช้. สำหรับเรื่องนี้ฉันต้องการแอดมิสามารถเปลี่ยนคำสั่งของหมวดหมู่อยู่ซึ่งมันควรจะถูกแสดงบนของฉัน NavigationMenu. ตอนนี้คนส่วนหนึ่งที่มันควรจะเหมาะสมเป็นคนสั่งให้หมวดหมู่จากพื้นฐานสั่งใน NavigationMenu นทำงานได้ แต่ตอนที่ฉันพยายามจะแก้ไขที่มีอยู่หมวดหมู่และพวกเขาสั่งของตัวเลขออกคำสั่งไม่ปรับปรุงได้ตามคาดเห็นตัวอย่าง:

นี่คือก่อนที่ทำการแก้ไขที่มีอยู่หมวดหมู่พวกนี้หมวดหมู่พ freshly ถูกเพิ่ม/ทำ New categories

นี่คือหลังจากทำการแก้ไขหมวดหมู่,"ตอบโต้"ควรจะเป็นคำสั่ง 2 อยู่ที่ไหนรูปแบบ api จะเป็นเพื่อ 0 และทดสอบจะเป็นลำดับ 1 Edited categories

อย่างที่คุณสามารถเห็นคำสั่งไม่สมเหตุสมผลเลยอีกต่อไปแล้ว เห็นได้ชัดว่ามันไม่ควรได้รับอนุญาตให้มากกว่า 1 ของคำสั่ง

ตอนนี้ปัญหาคือส่วนใหญ่มาจากนรหัสมอส

CategoryService.à™àà§à•à£àà™

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.มีดโกนหนวดดีๆสักอั

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

ทั้งรหัสคือชื่อหลังจากปุ่มแถลงข่าว มันจะผ่านไปด้วยผู้หมวดหมู่กับบางอย่างเพื่อเบอร์นี้เบอร์เข้าไปจากง่ายอย่าง dropdown เมนู

คน SaveCategory ฟังก์ชันดูเหมือนนี้:

CategorySerice.à™àà§à•à£àà™

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

ฟังก์ชันนี้โทรหากร problematic ฟังก์ชันก่อนที่จริงการช่วย/ปิดบังอะไรจากฐานข้อมูลเหมือนกัน ดังนั้นมันจะได้ดูสถานที่สำหรับคนที่เพิ่งถูกเพิ่มหรือลบหมวดหมู่.

หลังจากนี้เป็นเหตุการณ์ถูกไล่ออกเพื่อแจ้งให้ทราบของฉัน NavigationMenu ที่มีเปลี่ยนแปลงที่ได้ทำไว้และมันควรจะกลัจัดการพาต้องแสดงเรื่องนี้ มันไม่มีปัญหาหรอก

แต่ฉันไม่สามารถคิดออกว่าฉันจะเหมาะสมก็มีคำสั่งถูกแสดงไว้ในรายการตอนที่ฉันเปลี่ยนแปลงพวกเขาได้ เตือนหน่อ,ฟังก์ชันนี้ไม่ได้ทำงานเมื่อทำการแก้ไขที่มีอยู่หมวดหมู่. ถ้าฉันจะเพิ่มใหม่หมวดหมู่ตัวอย่างเช่นที่สั่ง 2 ต่อได้. มันเหมาะสมกะทุกอย่างกับไม่มีปัญหา

มีความช่วยเหลือขอต้อนรั!

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

คำตอบที่ดีที่สุด

0

ดังนั้นถ้าใช้พยายามจะทำให้เป็นที่สองกับพูดคำสั่ง 2 มันจะลดคำสั่งจำนวนของคนนั่นมันมาก่อนไหม?

ของวงตรรกะไม่สนับสนุนอย่างนั้นเพราะคุณเล่นเพิ่มขึ้นดังนั้นตอนที่มันเกิดขึ้นแล้วเดินผ่านคนก่อนหน้านี้ดังนั้นเธอจะได้เป็นดับเบิ้ล 1 สันนิษฐานได้เลยว่าเค้าหลังจาก.

ผมคิดว่าคุณจะสามารถอยู่ในที่ที่คุณต้องการถ้าคุณเปลี่ยนของคุณเรื่องเพื่อหนี downwards เหมือนของคุณผลักลงแต่เห็นได้ชัดว่าคุณจะต้องสนับสนุนคำสั่งด้านล่างศูนย์แล้วแต่นั่นไม่ใช่การรองรับเสมอ

ไปยัง:

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

ในที่สุดก็ออกจากของคุณ implementation นต่างกันมากผมคิดว่าคุณจะต้องการจริงๆเพิ่มใหม่หมวดหมู่และไม่ใช่พวกเขาทั้งหม(ไม่รวมตัวจ thew ใหม่)อีกครั้ง

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

ฉันพยายามคนแรก 2 ทางแก้ปัญหานั่นแต่นี่มันส่งผลให้อยู่ในคำสั่งที่เหลืออยู่ที่ 0 ที่กำลังสร้างใหม่หมวดหมู่. ฉันไม่ค่อยแน่ใจนัก\n สิ่งสุดท้ายหาทางออก แต่ถ้ามันช่วย"หมวดหมู่"คือรายการภายใน CategoryService.cs นี่คือนัดเดียวแหล่งข่าวของความจริงตอนที่ GetCategories จะเรียกมันยิงใหม่ข้อมูลจากฐานข้อมูล
Rowin

@Rowin สุดท้าย presumes สิ่งที่คุณต้องการจะแทรกไปยังคนใหม่หมวดหมู่และไม่ใช่ทั้งหมวดหมู่รายชื่อฉันไม่ได้รวมเรื่องจริงการช่วยเปลี่ยนไปใช่มั้ย? นี่มันไม่ใช่ปัญหาของคุณและคุณอยู่แล้วอาจารย์นั่น ดังนั้นของราะผมยังถือว่าคำสั่งอยู่ในหมวดหมู่ของคุณพารามิเตอร์อยู่แล้วอย่างถูกต้องตั้งเนื่องจากของคุณเปรียบเทียบกับมันและพวกเราไม่เห็นว่ามันเป็นเรียบร้อย คุณตั้งมันก่อนที่โทรหา SaveCategory งั้นเหรอ? อย่างที่เราทำไม่ manupulate ที่พารามิเตอร์หมวดหมู่แต่เพียงเพิ่มมันเป็นเพียงคนเดียว possiblity คือมันต้องเกิดจขึ้นบนโลกม 0?
T. Nielsen

ค่าจากคำสั่งมาจาก dropdown เมนูรอซึ่งถ้าเป็นอย่างนั้นนายสามารถเลือกจากค่าเป็น 0 เพื่อนคนปัจจุบันจำนวนมากของหมวดหมู่หรือเมื่อการสร้างหนึ่งค่าเป็น 0 เพื่อนคนปัจจุบันจำนวนมากของหมวดหมู่+1 ได้ มันเป็นการผ่านด้วยกั SaveCategory. สิ่งที่ฉันกำลังพยายามทำตอนนี้คือการสร้างเป็น"คนใหม่"รายการ ที่ที่ทุกอย่างเรียแปลงร่างขึ้นเพื่อทำให้สถานที่สำหรับคนใหม่หมวดหมู่. หลังจากที่มันเป็นการช่วยและที่จริงเพิ่มไปยังฐานข้อมูล มันทำงานสบายมากตอนที่กำลังสร้างใหม่หมวดหมู่แต่เมื่อทำการแก้ไขเอกสารที่มีอยู่นี่ไม่ได้เลื่อนขึ้นกว่านี้ละกันให้ยังอยู่ตามลำดับให้ถูกต้อง.
Rowin

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่