Magento2.1 UI 그리드, 필터 문제 제거 또는 지우기 (필터를 제거한 후 결과 행이 전체 컬렉션에 적용됨)


12

magento 2.1.0에서 UI 그리드를 만들었고 필터를 제거하거나 UI 그리드에서 모든 필터를 지우는 동안 문제가 발생했습니다. 필터링 된 결과가 전체 그리드를 차지한다는 것은 필터를 제거한 후 전체 그리드에서 반복되는 동일한 행을 의미 합니다.

이 문제가 발생하는 이유를 알지만이 문제를 해결할 수는 없습니다.

필터를 제거하거나 모든 필터를 지우는 동안 mui / index / render get 요청이 실행되지 않아 문제가 발생합니다 .

실제로 그것은 2 개 이상의 필터가 적용될 때 효과가 있었고 마지막 필터가 적용된 경우 제거하지는 않았습니다.


이 문제는 1 차 활성 적용 필터에 대한 특수 캐싱으로 인해 발생합니다.이 문제를 해결하기위한 제안 사항을 알려주십시오.
rajneesh gupta 5

답변:


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>

네 당신 말이 맞아요, 지금
해요

귀하의 솔루션에 건배 :) +1 +
Keyur Shah

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 u 덕분에 제 시간을 완벽하게
보냈습니다

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>

어디에서 고쳤는지 말해 줄 수 있습니까?
Sander van Zuidam

1
@Aasim Goriya, Me도 같은 문제가 발생하여 코드를 추가했습니다. 이제 필터가 제대로 작동합니다. 고맙습니다, 당신은 내 시간을 절약했습니다.
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.