Сітка Magento2.1 ui, видалення або очищення проблеми з фільтром (після видалення фільтра рядок результатів застосовується до всієї колекції)


12

Я створив сітку ui в magento 2.1.0 і зіткнувся з проблемою, видаляючи фільтри або очищаючи всі фільтри з сітки інтерфейсу. Мій відфільтрований результат займає всю сітку, тобто один і той же ряд повторюється у всій сітці після видалення фільтра.

Я розумію, чому виникає це питання, але не вдається виправити це питання.

Проблема виникає через mui / index / render, запит на отримання не спрацьовує, видаляючи фільтр або очищаючи весь фільтр.

Насправді це спрацювало, коли застосовано 2 або більше фільтрів, і я видаляю їх, але не у випадку останнього застосованого фільтру.


Це відбувається через спеціальне кешування для 1-го активного фільтрованого фільтра. Надайте будь-які пропозиції щодо вирішення цієї проблеми.
rajneesh gupta

Відповіді:


22

Просто для додання до попереднього рішення. Конкретне виправлення полягає в тому, щоб додати елемент "storageConfig". Якщо цього немає, ви побачите проблему, в якій дублюються дані рядків.

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

Де 'object_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


14

У мене була така ж проблема, і я вирішую цей код у 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
Так, це спрацювало чудово, Дякую багато тоні :)
rajneesh gupta

дякую @Tony u врятували мій час, працюючи ідеально, тому + голосувати
Nagaraju K

8

Я отримав ту саму проблему на 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>

Чи можете ви сказати мені, де ви це зафіксували?
Сандер ван

1
@Aasim Goriya, Мені також вийшов той самий випуск, додав свій код. Зараз фільтри працюють добре. Дякую, ти заощадив мій час.
balu

1
@DhadukMitesh, що ти маєш на увазі під фільтром за замовчуванням? чи можете ви поясніть більше?
Аасим Горія

1
@DhadukMitesh нормально, тож проблема полягає в тому, що коли ви скинули фільтр, ваша сітка не відображає всі значення правильно?
Аасим Горія

1
@DhadukMitesh Я не думаю, що це неможливо, оскільки сітчасті дані Magento зберігаються в таблиці ui_bookmark, а при фільтруванні дані зберігатимуться в ui_bookmark, тому неможливо змінити фільтр до зміни даних у таблиці ui_bookmark, тому вам потрібно щоб видалити записи таблиці ui_bookmark під час завантаження сторінки.
Аасим Горія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.