Magento 2.1 interfejs użytkownika, usuń lub wyczyść problem z filtrem (po usunięciu filtra wiersz wyników dotyczy całej kolekcji)

12

Utworzyłem siatkę interfejsu użytkownika w Magento 2.1.0 i napotkałem problem podczas usuwania filtrów lub usuwania wszystkich filtrów z siatki interfejsu użytkownika. Mój filtrowany wynik zajmuje całą siatkę, co oznacza ten sam wiersz powtarzany w całej siatce po usunięciu filtra.

Rozumiem, dlaczego ten problem się pojawia, ale nie mogę go naprawić.

Problem powstaje w wyniku żądania pobierania mui / indeksu / renderowania nie uruchamia się podczas usuwania filtra lub czyszczenia całego filtra.

W rzeczywistości zadziałało, gdy zastosowano 2 lub więcej filtrów i usuwam je, ale nie w przypadku zastosowania ostatniego filtru.

rajneesh gupta
źródło
Dzieje się tak ze względu na specjalne buforowanie pierwszego aktywnego filtru aplikacji. Proszę o sugestie dotyczące rozwiązania tego problemu.
rajneesh gupta

Odpowiedzi:

22

Aby dodać do poprzedniego rozwiązania. Konkretną poprawką jest dodanie elementu „storageConfig”. Jeśli go brakuje, zobaczysz problem polegający na powieleniu danych wiersza.

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

Gdzie „entity_id” jest twoim podstawowym kluczem do gromadzenia danych, a także takim samym, jak zdefiniowano w

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

I następujące można całkowicie usunąć. Ponieważ jest to tylko powielanie wartości określonej już w węźle „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>
Chris
źródło
tak, masz rację, teraz działa
rajneesh gupta
Pozdrowienia dla twojego rozwiązania :) +1 ode mnie
Keyur Shah,
14

miałem ten sam problem i rozwiązuję ten kod w pliku 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>

Spójrz na nazwę węzła „DataProvider”. Mam nadzieję, że to pomoże

Tony Bartiloro
źródło
2
Tak, działało świetnie, wielkie dzięki
Tony
dzięki @Tony zaoszczędziłeś czas pracując idealnie, więc + głosuj
Nagaraju K
8

Mam ten sam problem na Magento 2.3 i został rozwiązany za pomocą następującego kodu w 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>
Aasim Goriya
źródło
Czy możesz mi powiedzieć, gdzie to naprawiłeś?
Sander van Zuidam,
1
@Aasim Goriya, Me również dostałem ten sam problem, dodałem kod. Teraz filtry działają dobrze. Dziękuję, uratowałeś mi czas.
balu
1
@DhadukMitesh co rozumiesz przez domyślny filtr? czy możesz wyjaśnić więcej?
Aasim Goriya
1
@DhadukMitesh ok, więc problem polega na tym, że po zresetowaniu filtra siatka nie wyświetla wszystkich wartości poprawnych?
Aasim Goriya
1
@DhadukMitesh Nie sądzę, że jest to możliwe, ponieważ dane siatki Magento zapisują się w tabeli ui_bookmark, a po przefiltrowaniu dane zostaną zapisane w ui_bookmark, więc nie można zresetować filtra, dopóki dane nie zmienią się w tabeli ui_bookmark, więc potrzebujesz aby usunąć wpisy tabeli ui_bookmark podczas ładowania strony.
Aasim Goriya