की कोशिश कर रहा है सम्मिलित करने के लिए,/क्रमबद्ध एक सूची के आधार पर 'आदेश' मूल्य

0

सवाल

मैं निर्माण कर रहा हूँ एक दस्तावेज आवेदन में जो मैं लोगों को अनुमति देने के अंदर मेरा व्यवसाय का उपयोग करने के लिए प्रलेखन के बारे में कुछ सॉफ्टवेयर. इस के साथ, मैं एक पृष्ठ है, जहां किसी का प्रबंधन कर सकते व्यवस्थापक श्रेणियाँ और उपयोगकर्ताओं को. इस के लिए, मैं चाहता हूँ करने के लिए व्यवस्थापक सक्षम होने का क्रम बदलने के लिए एक वर्ग में जो यह प्रदर्शित किया जाना चाहिए पर मेरे NavigationMenu. अब, भाग में, जहां यह होना चाहिए ठीक तरह से क्रम में श्रेणियों के आधार पर आदेश के अंदर NavigationMenu काम करता है. लेकिन जब मैं करने के लिए प्रयास करें संपादित मौजूदा श्रेणियों और उनके क्रम संख्या, आदेश नहीं होंगे तदनुसार अपडेट देखते हैं, इस उदाहरण में:

यह संपादन करने से पहले मौजूदा श्रेणियों, इन श्रेणियों में कर रहे हैं हौसले से जोड़ा गया/बनाया New categories

यह है के बाद से संपादन श्रेणियों, "प्रतिक्रिया" होना चाहिए के आदेश 2, जहां एपीआई के लिए किया जाएगा 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);
        }
    }

ऊपर कोड के बाद कहा जाता है एक बटन दबाएँ. यह गुजरता के साथ एक वर्ग के साथ एक निश्चित क्रम संख्या, इस संख्या में पारित हो जाता है के साथ एक सरल लटकती मेनू.

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

इस समारोह में कॉल समस्याग्रस्त समारोह से पहले वास्तव में बचत/कुछ भी जोड़ने के लिए डेटाबेस । तो यह कर सकते हैं जगह लेने के लिए नए जोड़े गए या संपादित श्रेणी ।

इस के बाद, एक घटना निकाल दिया जाता है को सूचित करने के लिए मेरे 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

@Rowin अंतिम मान लिया जाता है क्या आप चाहते हैं सम्मिलित करने के लिए, नई श्रेणी में नहीं है और पूरे श्रेणियाँ सूची में मैं शामिल नहीं किया था के बारे में कुछ भी वास्तव में बचत में बदल गया है, सही? नहीं था यह आपकी समस्या है और आप पहले से ही मास्टर है । तो के कारण मैं यह भी आशा है की इस क्रम में आपके श्रेणी पैरामीटर पहले से ही सही ढंग से सेट करने के लिए अपने कारण की तुलना में यह करने के लिए और हम नहीं देखते कि यह कैसे सेट किया जाता है. क्या आप इसे सेट पहले से ही फोन करने से पहले SaveCategory तो? के रूप में हम नहीं manupulate पैरामीटर श्रेणी के, लेकिन बस के रूप में जोड़ने के केवल एक possiblity है यह हमेशा किया गया था 0?
T. Nielsen

के मान में से क्रम से आता है एक लटकती मेनू में, जो यू से चयन कर सकते हैं 0 करने के लिए वर्तमान की राशि श्रेणियों, या जब एक बनाने के लिए, 0 करने के लिए वर्तमान की राशि श्रेणियाँ + 1. यह जा रहा है के साथ पारित करने के लिए SaveCategory. क्या मैं कोशिश कर रहा हूँ करने के लिए अब है, बनाने के लिए एक "नई" की सूची. जहां सब कुछ स्थानांतरित कर दिया है करने के लिए जगह बनाने के लिए नई श्रेणी । जिसके बाद इसे बचाया जा रहा है और वास्तव में करने के लिए जोड़ा गया के एक डेटाबेस है । यह ठीक काम करता है बनाने के लिए जब नई श्रेणियों, लेकिन जब संपादन मौजूदा दस्तावेजों में यह बदलाव नहीं करता है तदनुसार रहने के लिए सही क्रम में.
Rowin

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में