Magento2.1 ui grid, remove or clear filter issue (after remove filter, result row apply to whole collection)

12

J'ai créé une grille d'interface utilisateur dans magento 2.1.0 et fait face à un problème lors de la suppression des filtres ou effacez tous les filtres de la grille d'interface utilisateur. Mon résultat filtré occupe toute la grille signifie la même ligne répétée dans toute la grille après avoir retiré le filtre.

Je comprends pourquoi ce problème se pose, mais je ne peux pas résoudre ce problème.

Un problème survient en raison de mui / index / render get request ne se déclenche pas lors de la suppression du filtre ou de la suppression de tous les filtres.

En fait, cela a fonctionné lorsque 2 filtres ou plus sont appliqués et je les supprime, mais pas en cas de dernier filtre appliqué.

rajneesh gupta
la source
Cela se produit en raison de la mise en cache spéciale pour le 1er filtre appilied actif.Veuillez me donner des suggestions pour résoudre ce problème.
rajneesh gupta

Réponses:

21

Juste pour ajouter à la solution précédente. Le correctif spécifique consiste à ajouter l'élément 'storageConfig'. Si cela manque, vous verrez le problème où les données de ligne sont dupliquées.

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

Où 'entity_id' est votre clé primaire pour les données de collecte, et également la même que celle définie dans

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

Et les éléments suivants peuvent être supprimés complètement. Comme cela ne fait que dupliquer la valeur spécifiée déjà dans le nœud '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
la source
oui vous avez raison,
ça
Bravo à votre solution :) +1 de ma part
Keyur Shah
13

j'ai eu le même problème et je résous avec ce code dans 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>

Jetez un œil au nom du nœud "DataProvider". J'espère que cela aide

Tony Bartiloro
la source
2
Oui, cela a très bien fonctionné, merci beaucoup Tony :)
Rajneesh Gupta
merci @Tony u a sauvé mon temps de travail parfait donc + vote
Nagaraju K
6

J'ai le même problème sur Magento 2.3 et résolu en utilisant le code suivant dans 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
la source
Pouvez-vous me dire où vous avez corrigé cela?
Sander van Zuidam
1
@Aasim Goriya, moi aussi j'ai eu le même problème, a ajouté votre code. Maintenant, les filtres fonctionnent bien. Merci, vous m'avez fait gagner du temps.
balu
1
@DhadukMitesh que voulez-vous dire par filtre par défaut? pouvez-vous s'il vous plaît expliquer plus?
Aasim Goriya
1
@DhadukMitesh ok donc votre problème est que lorsque vous réinitialisez le filtre, votre grille n'affiche pas toutes les valeurs correctes?
Aasim Goriya
1
@DhadukMitesh Je ne pense pas que cela soit possible, car les données de la grille de Magento sont enregistrées dans la table ui_bookmark et lorsque vous filtrez les données seront enregistrées dans ui_bookmark, il ne peut donc pas être possible de réinitialiser le filtre jusqu'à ce que les données changent dans la table ui_bookmark, vous avez donc besoin pour supprimer les entrées de la table ui_bookmark pendant le chargement de votre page.
Aasim Goriya