Magento2.1 ui网格,删除或清除过滤器问题(删除过滤器后,结果行适用于整个集合)


12

我在magento 2.1.0中创建了ui网格,并在从ui网格中删除过滤器或清除所有过滤器时遇到问题。我的过滤结果占据了整个网格,这意味着移除过滤器后,在整个网格中重复了同一行

我弄清楚了为什么会出现此问题,但无法解决此问题。

由于mui / index / render获取请求在删除过滤器或清除所有过滤器时未触发,因此出现问题。

实际上,当应用了2个或更多过滤器时,它起作用了,我删除了它们,但在最后一次应用过滤器时却没有。


发生这种情况是由于对第一个活动应用过滤器进行了特殊缓存。请给我任何解决此问题的建议。
rajneesh gupta

Answers:


22

只是添加到以前的解决方案。具体的解决方法是添加“ storageConfig”项。如果缺少此属性,则会看到行数据重复的问题。

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

其中“ entity_id”是收集数据的主键,并且与

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

并且可以完全删除以下内容。由于这只是复制已经在“ 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>

是的,您是对的,它现在可以正常工作
rajneesh gupta

为您的解决方案
加油

13

我遇到了同样的问题,我在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>

看一下节点名称“ DataProvider”。希望能帮助到你


2
是的,它很好用,非常感谢tony :)
rajneesh gupta

谢谢@托尼你已经节省了我完美的工作时间,所以+投票
Nagaraju K

7

我在Magento 2.3上遇到了同样的问题,并通过使用以下代码解决了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>

你能告诉我你在哪里固定的吗?
桑德·范·祖丹'19

1
@Aasim Goriya,我也遇到了同样的问题,添加了您的代码。现在过滤器工作正常。谢谢,您节省了我的时间。
balu

1
@DhadukMitesh默认情况下,您是什么意思过滤器?你能解释更多吗?
Aasim Goriya

1
@DhadukMitesh好的,所以您的问题是,当您重置过滤器时,网格显示的所有值都不正确吗?
Aasim Goriya

1
@DhadukMitesh我认为这是不可能的,因为Magento的网格数据保存在ui_bookmark表中,当您过滤数据时,数据将保存在ui_bookmark中,因此在ui_bookmark表中的数据更改之前,无法重置过滤器,因此您需要在页面加载时删除ui_bookmark表条目。
Aasim Goriya
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.