magento2 后台Grid点击column进行排序时会出现单个重复record

问题描述

自己开发与第三方module都出现一个问题,Grid的column排序点击三次后会出现重复record,头两次会加载,第三次直接出现结果,所以可以判断是加载cache数据时出现问题。

问题原因

vendor/magento/module-ui/view/base/web/js/grid/data-storage.js
grid数据提取后会加到cache中,但只会保存一个id数据,并且默认id名是entity_id,所以使用的id不是entity_id则需要在ui component xml中额外指定,但大多数开发者会忽略这一点。

参考以下数据源设置,cms的数据ID不是entity_id而是page_id,一般primaryFieldName节点不会设置错,但storageConfig节点不设置不会出现明显问题。

<!-- vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml -->
<dataSource name="cms_page_listing_data_source">
    <argument name="dataProvider" xsi:type="configurableObject">
        <argument name="class" xsi:type="string">Magento\Cms\Ui\Component\DataProvider</argument>
        <argument name="name" xsi:type="string">cms_page_listing_data_source</argument>
        <argument name="primaryFieldName" xsi:type="string">page_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">page_id</item>
                </item>
            </item>
        </argument>
    </argument>
</dataSource>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值