Magento2.1 ui ग्रिड, फ़िल्टर हटाने या साफ़ करें (फ़िल्टर हटाने के बाद, परिणाम पंक्ति पूरे संग्रह पर लागू होती है)


12

मैंने Magento 2.1.0 में ui ग्रिड बनाया और फ़िल्टर हटाते समय या ui ग्रिड से सभी फ़िल्टर साफ़ करते हुए समस्या का सामना कर रहा था। मेरा फ़िल्टर किया गया परिणाम पूरे ग्रिड पर कब्जा कर लेता है अर्थात फ़िल्टर हटाने के बाद पूरे ग्रिड में एक ही पंक्ति दोहराई जाती है

मुझे पता है कि यह मुद्दा क्यों उठता है, लेकिन इस मुद्दे को ठीक करने में असमर्थ है।

मुई / इंडेक्स / रेंडर के कारण समस्या उत्पन्न होती है, फ़िल्टर हटाते समय अनुरोध नहीं करता है या सभी फ़िल्टर को साफ़ करें।

वास्तव में यह तब काम किया जब 2 या अधिक फ़िल्टर लागू होते हैं और मैं उन्हें हटा देता हूं लेकिन अंतिम फ़िल्टर किए गए के मामले में नहीं।


यह 1 सक्रिय एपलीड फ़िल्टर के लिए विशेष कैशिंग के कारण हो रहा है। कृपया मुझे इस मुद्दे को हल करने के लिए कोई सुझाव दें।
रजनीश गुप्ता

जवाबों:


22

बस पिछले समाधान में जोड़ने के लिए। विशिष्ट फिक्स 'StorageConfig' आइटम जोड़ना है। यदि यह गायब है, तो आप उस मुद्दे को देखेंगे जहां पंक्ति डेटा को डुप्लिकेट किया गया है।

<item name="storageConfig" xsi:type="array">
    <item name="indexField" xsi:type="string">entity_id</item>
</item>

जहाँ संग्रह डेटा के लिए 'unit_id' आपकी प्राथमिक कुंजी है, और उसी के रूप में भी परिभाषित किया गया है

<argument name="primaryFieldName" xsi:type="string">entity_id</argument>

और निम्नलिखित को पूरी तरह से हटाया जा सकता है। के रूप में यह सिर्फ 'dataProvider' नोड में पहले से निर्दिष्ट मूल्य की नकल कर रहा है।

<argument name="data" xsi:type="array">
    <item name="js_config" xsi:type="array">
        <item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item>
    </item>
</argument>

हाँ, आप सही हैं, अब इसका काम कर रहे हैं
rajneesh gupta

आपके समाधान के लिए चीयर्स :) मुझ से +1
कीरु शाह

14

मेरे पास एक ही मुद्दा था और मैं ui_component xml में इस कोड के साथ हल करता हूं:

<dataSource name="storelocator_store_listing_data_source">
    <argument name="dataProvider" xsi:type="configurableObject">
        <argument name="class" xsi:type="string">StoreGridDataProvider</argument>
        <argument name="name" xsi:type="string">storelocator_store_listing_data_source</argument>
        <argument name="primaryFieldName" xsi:type="string">store_id</argument>
        <argument name="requestFieldName" xsi:type="string">id</argument>
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item>
                <item name="update_url" xsi:type="url" path="mui/index/render"/>
                <item name="storageConfig" xsi:type="array">
                    <item name="indexField" xsi:type="string">store_id</item>
                </item>
            </item>
        </argument>
    </argument>
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item>
        </item>
    </argument>
</dataSource>

नोड नाम "DataProvider" पर एक नज़र डालें। आशा है ये मदद करेगा


2
हाँ, यह बहुत अच्छा काम किया, बहुत बहुत धन्यवाद :)
rajneesh gupta

धन्यवाद @ टोनी यू ने मेरे समय को पूर्ण रूप से कार्य करते हुए बचाया + वोट
नागराजू के

8

मुझे Magento 2.3 पर एक ही मुद्दा मिला है और निम्नलिखित कोड का उपयोग करके हल किया गया है ui_component xml

<dataSource component="Magento_Ui/js/grid/provider" name="listing_data_source">
        <settings>
            <storageConfig>
                <param name="indexField" xsi:type="string">primary_id</param>
            </storageConfig>
            <updateUrl path="mui/index/render"/>
        </settings>
        ...
        ...
</dataSource>

क्या आप मुझे बता सकते हैं कि आपने कहां तय किया है?
सैंडर वैन ज़ुइडम

1
@ आसिम गोरिया, मुझे भी एक ही मुद्दा मिला, अपना कोड जोड़ा। अब फिल्टर काम ठीक है। धन्यवाद, आपने मेरा समय बचाया।
बालू

1
@DhadukMitesh आपको डिफ़ॉल्ट फ़िल्टर से क्या मतलब है? क्या आप अधिक बता सकते हैं?
आसिम गोरिया

1
@DhadukMitesh ठीक है तो आपका मुद्दा यह है कि जब आप फ़िल्टर को रीसेट करते हैं तो आपका ग्रिड सभी मानों को सही नहीं दिखाता है?
आसिम गोरिया

1
@DhadukMitesh मुझे नहीं लगता कि यह संभव हो सकता है, क्योंकि Magento का ग्रिड डेटा ui_bookmark टेबल में सेव होता है और जब आप फ़िल्टर करेंगे तो डेटा ui_bookmark में सेव होगा, इसलिए ui_bookmark टेबल में डेटा बदलने तक फ़िल्टर रीसेट करना संभव नहीं हो सकता है, इसलिए आपको आवश्यकता है अपने पेज लोड करते समय ui_bookmark टेबल प्रविष्टियों को हटाने के लिए।
आसिम गोरिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.