ตาราง Magento2.1 ui ลบหรือล้างปัญหาตัวกรอง (หลังจากลบตัวกรองแถวผลจะใช้กับการรวบรวมทั้งหมด)


12

ฉันสร้าง ui grid ใน magento 2.1.0 และประสบปัญหาขณะลบตัวกรองหรือล้างตัวกรองทั้งหมดจาก ui grid ผลลัพธ์ที่กรองของฉันใช้กริดทั้งหมดหมายความว่าแถวเดียวกันซ้ำกันในกริดทั้งหมดหลังจากลบตัวกรอง

ฉันเข้าใจว่าทำไมปัญหานี้จึงเกิดขึ้น แต่ไม่สามารถแก้ไขปัญหานี้ได้

ปัญหาเกิดขึ้นเนื่องจากการร้องขอ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>

โดยที่ '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

ไชโยกับทางออกของคุณ :) +1 จากฉัน
Keyur Shah

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
ใช่มันใช้งานได้ดีขอบคุณมาก tony :)
rajneesh gupta

ขอบคุณ @Tony u ช่วยประหยัดเวลาของฉันได้อย่างสมบูรณ์แบบดังนั้นโหวต +
Nagaraju K

8

ผมได้มีปัญหาเดียวกันกับวีโอไอพี 2.3ui_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>

คุณบอกฉันได้ไหมว่าคุณซ่อมอยู่ที่ไหน
Sander van Zuidam

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.