Magento2.1 ui grid, eliminar o eliminar el problema del filtro (después de eliminar el filtro, la fila de resultados se aplica a toda la colección)

12

Creé ui grid en magento 2.1.0 y enfrento un problema al eliminar filtros o borrar todos los filtros de ui grid. Mi resultado filtrado ocupa toda la cuadrícula significa que la misma fila se repite en toda la cuadrícula después de eliminar el filtro.

Me imagino por qué surge este problema, pero no puedo solucionarlo.

El problema surge debido a que la solicitud de obtención mui / index / render no se activa al eliminar el filtro o borrar todo el filtro.

De hecho, funcionó cuando se aplicaron 2 o más filtros y los eliminé, pero no en el caso de la última aplicación filtrada.

rajneesh gupta
fuente
Esto sucede debido al almacenamiento en caché especial para el primer filtro aplicado activo. Por favor, dame alguna sugerencia para resolver este problema.
rajneesh gupta

Respuestas:

21

Solo para agregar a la solución anterior. La solución específica es agregar el elemento 'storageConfig'. Si falta esto, verá el problema donde se duplican los datos de fila.

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

Donde 'entity_id' es su clave principal para los datos de recopilación, y también la misma que se define en

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

Y lo siguiente se puede eliminar por completo. Como esto solo está duplicando el valor especificado ya en el nodo '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
fuente
sí, tienes razón, está funcionando ahora
rajneesh gupta
Saludos a su solución :) +1 de mi parte
Keyur Shah
13

Tuve el mismo problema y lo resuelvo con este código en 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>

Eche un vistazo al nombre de nodo "DataProvider". Espero eso ayude

Tony Bartiloro
fuente
2
Sí, funcionó muy bien, muchas gracias tony :)
rajneesh gupta
gracias @ Tony has ahorrado mi tiempo trabajando perfecto así que + voto
Nagaraju K
6

Tengo el mismo problema en Magento 2.3 y lo resolví usando el siguiente código 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
fuente
¿Puedes decirme dónde lo arreglaste?
Sander van Zuidam
1
@Aasim Goriya, Yo también tuve el mismo problema, agregué tu código. Ahora los filtros funcionan bien. Gracias, me salvaste el tiempo.
balu
1
@DhadukMitesh, ¿qué quieres decir con filtro predeterminado? ¿puedes explicar más?
Aasim Goriya
1
@DhadukMitesh ok, ¿entonces su problema es cuando restablece el filtro que su cuadrícula no muestra todos los valores correctos?
Aasim Goriya
1
@DhadukMitesh No creo que esto sea posible, ya que los datos de la cuadrícula de Magento se guardan en la tabla ui_bookmark y cuando filtra los datos se guardarán en ui_bookmark, por lo que no es posible restablecer el filtro hasta que los datos cambien en la tabla ui_bookmark, por lo que necesita para eliminar las entradas de la tabla ui_bookmark mientras se carga la página.
Aasim Goriya