Grade Magi2.1 da interface do usuário, remova ou limpe o problema de filtro (após remover o filtro, a linha de resultados se aplica a toda a coleção)

13

Criei uma grade de interface do usuário no magento 2.1.0 e enfrentei um problema ao remover filtros ou limpar todos os filtros da grade de interface do usuário. Meu resultado filtrado ocupa a grade inteira significa a mesma linha repetida em toda a grade após a remoção do filtro.

Eu entendo por que esse problema surge, mas não foi possível corrigi-lo.

O problema surge devido ao pedido mui / index / render get não disparar ao remover o filtro ou limpar todo o filtro.

De fato, funcionou quando dois ou mais filtros são aplicados e eu os removo, mas não no caso do último filtro aplicado.

rajneesh gupta
fonte
Isso está acontecendo devido ao armazenamento em cache especial do primeiro filtro ativo aplicado. Dê-me sugestões para resolver esse problema.
Gupta rajneesh

Respostas:

21

Apenas para adicionar à solução anterior. A correção específica é adicionar o item 'storageConfig'. Se estiver faltando, você verá o problema em que os dados da linha são duplicados.

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

Onde 'entity_id' é sua chave primária para os dados de coleta e também a mesma definida em

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

E o seguinte pode ser removido completamente. Como isso está apenas duplicando o valor especificado já no nó '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
fonte
sim você está certo, o seu trabalho agora
Gupta rajneesh
Cheers para sua solução :) +1 de mim
Keyur Shah
13

Eu tive o mesmo problema e resolvo com esse código no 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>

Dê uma olhada no nome do nó "DataProvider". Espero que ajude

Tony Bartiloro
fonte
2
Sim, ele trabalhou muito, muito obrigado :) tony
Gupta rajneesh
obrigado
@ Tony
6

Eu tenho o mesmo problema em Magento 2.3 e resolvido usando o seguinte código no 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
fonte
Você pode me dizer onde consertou isso?
Sander van Zuidam 11/07/19
1
@Aasim Goriya, Eu também tenho o mesmo problema, adicionou seu código. Agora os filtros funcionam bem. Obrigado, você economizou meu tempo.
balu
1
@DhadukMitesh, o que você quer dizer com filtro padrão? você pode explicar mais?
Aasim Goriya
1
@DhadukMitesh ok, então seu problema é que, quando você redefine o filtro, sua grade não mostra todos os valores corretos?
Aasim Goriya
1
@DhadukMitesh Acho que isso não é possível, já que os dados da grade do Magento são salvos na tabela ui_bookmark e, quando você filtra, os dados são salvos no ui_bookmark, portanto não é possível redefinir o filtro até que os dados sejam alterados na tabela ui_bookmark. para remover as entradas da tabela ui_bookmark enquanto a página é carregada.
Aasim Goriya