Magento2.1 UI-Raster, Filterproblem entfernen oder löschen (nach dem Entfernen des Filters gilt die Ergebniszeile für die gesamte Sammlung)


13

Ich habe ein UI-Raster in Magento 2.1.0 erstellt und habe Probleme beim Entfernen von Filtern oder beim Löschen aller Filter aus dem UI-Raster. Mein gefiltertes Ergebnis belegt das gesamte Raster, dh dieselbe Zeile wird nach dem Entfernen des Filters im gesamten Raster wiederholt .

Ich finde heraus, warum dieses Problem auftritt, kann es jedoch nicht beheben.

Das Problem tritt auf, weil die Anforderung mui / index / render get beim Auslösen des Filters oder Löschen aller Filter nicht ausgelöst wird.

Tatsächlich hat es funktioniert, wenn 2 oder mehr Filter angewendet wurden und ich sie entferne, aber nicht im Fall des zuletzt angewendeten Filters.


Dies geschieht aufgrund eines speziellen Caching für den ersten aktiven angewendeten Filter. Bitte geben Sie mir Vorschläge zur Behebung dieses Problems.
Rajneesh Gupta

Antworten:


21

Nur um die vorherige Lösung zu ergänzen. Die spezifische Lösung besteht darin, das Element 'storageConfig' hinzuzufügen. Wenn dies fehlt, wird das Problem angezeigt, bei dem Zeilendaten dupliziert werden.

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

Wobei 'entity_id' Ihr Primärschlüssel für die Erfassungsdaten ist und auch derselbe wie in definiert

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

Und das Folgende kann komplett entfernt werden. Da dies nur den Wert dupliziert, der bereits im Knoten 'dataProvider' angegeben ist.

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

Ja, Sie haben Recht, es funktioniert jetzt
Rajneesh Gupta

Prost auf deine Lösung :) +1 von mir
Keyur Shah

13

Ich hatte das gleiche Problem und ich löse mit diesem Code in 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>

Schauen Sie sich den Knotennamen "DataProvider" an. Ich hoffe es hilft


2
Ja, es hat
super

danke @Tony du hast meine Zeit gespart, perfekt zu arbeiten also + Abstimmung
Nagaraju K

6

Ich habe das gleiche Problem in Magento 2.3 und wurde mithilfe des folgenden Codes behoben 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>

Können Sie mir sagen, wo Sie das behoben haben?
Sander van Zuidam

1
@ Asim Goriya, ich habe auch das gleiche Problem, fügte Ihren Code hinzu. Jetzt funktionieren Filter einwandfrei. Danke, du hast meine Zeit gespart.
Balu

1
@DhadukMitesh was meinst du mit Standardfilter? Kannst du bitte mehr erklären?
Aasim Goriya

1
@DhadukMitesh ok, also ist Ihr Problem, wenn Sie den Filter zurücksetzen, zeigt Ihr Raster nicht alle Werte korrekt an?
Aasim Goriya

1
@DhadukMitesh Ich denke nicht, dass dies möglich sein kann, da Magentos Rasterdaten in der Tabelle ui_bookmark gespeichert werden und wenn Sie die Daten filtern, in der Tabelle ui_bookmark gespeichert werden, sodass der Filter erst zurückgesetzt werden kann, wenn sich die Daten in der Tabelle ui_bookmark ändern um ui_bookmark-Tabelleneinträge zu entfernen, während Ihre Seite geladen wird.
Aasim Goriya
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.