I'm building a module but came to a problem:
when i modify filter and reset it back i get only 1 item listed multiple times
after filter reset:
same goes if i change the amount displayed per page, if i switch it back i get last item listed multiple times.
any idea what i made wrong ?
here is my ui_component file
<?xml version="1.0" ?> <listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <argument name="data" xsi:type="array"> <item name="js_config" xsi:type="array"> <item name="provider" xsi:type="string">wemessage_producttags_tags_listing.wemessage_producttags_tags_listing_data_source</item> </item> </argument> <settings> <buttons> <button name="add"> <url path="*/*/new"/> <class>primary</class> <label translate="true">Add new Tags</label> </button> </buttons> <spinner>wemessage_producttags_tags_columns</spinner> <deps> <dep>wemessage_producttags_tags_listing.wemessage_producttags_tags_listing_data_source</dep> </deps> </settings> <massaction name="listing_massaction"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="indexField" xsi:type="string">tags_id</item> <item name="component" xsi:type="string">Magento_Ui/js/grid/tree-massactions</item> </item> </argument> <action name="delete"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="type" xsi:type="string">delete</item> <item name="label" xsi:type="string" translate="true">Delete</item> <item name="url" xsi:type="url" path="wemessage_producttags/tags/massDelete"/> <item name="confirm" xsi:type="array"> <item name="title" xsi:type="string" translate="true">Delete item</item> <item name="message" xsi:type="string" translate="true">Are you sure you wan't to delete selected items?</item> </item> </item> </argument> </action> </massaction> <dataSource component="Magento_Ui/js/grid/provider" name="wemessage_producttags_tags_listing_data_source"> <settings> <updateUrl path="mui/index/render"/> </settings> <aclResource>Wemessage_ProductTags::Tags</aclResource> <dataProvider class="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider" name="wemessage_producttags_tags_listing_data_source"> <settings> <requestFieldName>id</requestFieldName> <primaryFieldName>tags_id</primaryFieldName> </settings> </dataProvider> </dataSource> <listingToolbar name="listing_top"> <settings> <sticky>true</sticky> </settings> <bookmark name="bookmarks"/> <columnsControls name="columns_controls"/> <filters name="listing_filters"/> <paging name="listing_paging"/> </listingToolbar> <columns name="wemessage_producttags_tags_columns"> <selectionsColumn name="ids"> <settings> <indexField>tags_id</indexField> </settings> </selectionsColumn> <column name="tags_id"> <settings> <filter>text</filter> <sorting>asc</sorting> <label translate="true">ID</label> </settings> </column> <column name="product_name"> <settings> <filter>text</filter> <label translate="true">product name</label> </settings> </column> <column name="tag"> <settings> <filter>text</filter> <label translate="true">Tag</label> </settings> </column> <actionsColumn class="Wemessage\ProductTags\Ui\Component\Listing\Column\TagsActions" name="actions"> <argument name="data" xsi:type="array"> <item name="sortOrder" xsi:type="number">99</item> </argument> <settings> <indexField>tags_id</indexField> <resizeEnabled>false</resizeEnabled> <resizeDefaultWidth>107</resizeDefaultWidth> </settings> </actionsColumn> </columns> </listing>
Have complete code in github
Bump! Same happened to me, curious what's the reason behind it
Hello @wemessage_wemessage
Here I have done with this issue using following code.
<?xml version="1.0" encoding="UTF-8"?> <listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <!-- main part of the grid --> <argument name="data" xsi:type="array"> <!-- define where to find the date source --> <item name="js_config" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing_data_source</item> <item name="deps" xsi:type="string">ksquare_General_listing.ksquare_General_listing_data_source</item> </item> <!-- define where to find the columns --> <item name="spinner" xsi:type="string">ksquare_General_columns</item> <item name="buttons" xsi:type="array"> <item name="add" xsi:type="array"> <item name="name" xsi:type="string">add</item> <item name="label" xsi:type="string" translate="true">Add New</item> <item name="class" xsi:type="string">primary</item> <item name="url" xsi:type="string">*/*/new</item> </item> </item> </argument> <!-- define the date source (must be the same than in argument/item/provider and argument/js_config/deps --> <dataSource name="ksquare_General_listing_data_source"> <argument name="dataProvider" xsi:type="configurableObject"> <!-- unique name for the grid --> <argument name="class" xsi:type="string">KsquareGeneralGridDataProvider</argument> <!-- name of the data source same as in argument/js_config/provider --> <argument name="name" xsi:type="string">ksquare_General_listing_data_source</argument> <argument name="primaryFieldName" xsi:type="string">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">id</item> </item> </item> </argument> </argument> </dataSource> <container name="listing_top"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="template" xsi:type="string">ui/grid/toolbar</item> <!-- <item name="stickyTmpl" xsi:type="string">ui/grid/sticky/toolbar</item> --> </item> </argument> <bookmark name="bookmarks"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="storageConfig" xsi:type="array"> <item name="namespace" xsi:type="string">ksquare_General_listing</item> </item> </item> </argument> </bookmark> <component name="columns_controls"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="columnsData" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.ksquare_General_columns</item> </item> <item name="component" xsi:type="string">Magento_Ui/js/grid/controls/columns</item> <item name="displayArea" xsi:type="string">dataGridActions</item> </item> </argument> </component> <filterSearch name="fulltext"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing_data_source</item> <item name="chipsProvider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.listing_top.listing_filters_chips</item> <item name="storageConfig" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.listing_top.bookmarks</item> <item name="namespace" xsi:type="string">current.search</item> </item> </item> </argument> </filterSearch> <filters name="listing_filters"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="columnsProvider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.ksquare_General_columns</item> <item name="storageConfig" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.listing_top.bookmarks</item> <item name="namespace" xsi:type="string">current.filters</item> </item> <item name="templates" xsi:type="array"> <item name="filters" xsi:type="array"> <item name="select" xsi:type="array"> <item name="component" xsi:type="string">Magento_Ui/js/form/element/ui-select</item> <item name="template" xsi:type="string">ui/grid/filters/elements/ui-select</item> </item> </item> </item> <item name="childDefaults" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.listing_top.listing_filters</item> <item name="imports" xsi:type="array"> <item name="visible" xsi:type="string">ksquare_General_listing.ksquare_General_listing.ksquare_General_columns.${ $.index }:visible</item> </item> </item> </item> <item name="observers" xsi:type="array"> <item name="column" xsi:type="string">column</item> </item> </argument> </filters> <massaction name="listing_massaction"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="selectProvider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.ksquare_General_columns.ids</item> <item name="indexField" xsi:type="string">id</item> </item> </argument> <action name="delete"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="type" xsi:type="string">delete</item> <item name="label" xsi:type="string" translate="true">Delete</item> <item name="url" xsi:type="url" path="aiadminGeneral/General/massDelete"/> <item name="confirm" xsi:type="array"> <item name="name" xsi:type="string" translate="true">Delete items</item> <item name="message" xsi:type="string" translate="true">Are you sure you wan't to delete selected items?</item> </item> </item> </argument> </action> <action name="edit"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="type" xsi:type="string">edit</item> <item name="label" xsi:type="string" translate="true">Edit</item> <item name="callback" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.ksquare_General_columns_editor</item> <item name="target" xsi:type="string">editSelected</item> </item> </item> </argument> </action> </massaction> <paging name="listing_paging"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="storageConfig" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.listing_top.bookmarks</item> <item name="namespace" xsi:type="string">current.paging</item> </item> <item name="selectProvider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.ksquare_General_columns.ids</item> </item> </argument> </paging> </container> <!-- define the columns of my grid --> <columns name="ksquare_General_columns"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <!-- Bookmarks behaviour --> <item name="storageConfig" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.listing_top.bookmarks</item> <item name="namespace" xsi:type="string">current</item> </item> <item name="editorConfig" xsi:type="array"> <item name="selectProvider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.ksquare_General_columns.ids</item> <item name="enabled" xsi:type="boolean">true</item> <item name="indexField" xsi:type="string">id</item> <item name="clientConfig" xsi:type="array"> <item name="saveUrl" xsi:type="url" path="aiadminGeneral/General/inlineEdit"/> <item name="validateBeforeSave" xsi:type="boolean">false</item> </item> </item> <item name="childDefaults" xsi:type="array"> <item name="controlVisibility" xsi:type="boolean">true</item> <item name="fieldAction" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.ksquare_General_columns_editor</item> <item name="target" xsi:type="string">startEdit</item> <item name="params" xsi:type="array"> <item name="0" xsi:type="string">${ $.$data.rowIndex }</item> <item name="1" xsi:type="boolean">true</item> </item> </item> <item name="storageConfig" xsi:type="array"> <item name="provider" xsi:type="string">ksquare_General_listing.ksquare_General_listing.listing_top.bookmarks</item> <item name="root" xsi:type="string">columns.${ $.index }</item> <item name="namespace" xsi:type="string">current.${ $.storageConfig.root}</item> </item> </item> </item> </argument> <selectionsColumn name="ids"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <!-- define which field will be used as ID --> <item name="indexField" xsi:type="string">id</item> </item> </argument> </selectionsColumn> <!-- Column ID --> <column name="id"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="filter" xsi:type="string">textRange</item> <item name="sorting" xsi:type="string">asc</item> <item name="label" xsi:type="string" translate="true">ID</item> </item> </argument> </column> <column name="name"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="visible" xsi:type="boolean">true</item> <item name="dataType" xsi:type="string">text</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">General</item> <item name="dataScope" xsi:type="string">name</item> <item name="label" xsi:type="string" translate="true">Name</item> <item name="filter" xsi:type="string">text</item> <item name="editor" xsi:type="array"> <item name="editorType" xsi:type="string">text</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </item> </argument> </column> <column name="email"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="visible" xsi:type="boolean">true</item> <item name="dataType" xsi:type="string">text</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">General</item> <item name="dataScope" xsi:type="string">email</item> <item name="label" xsi:type="string" translate="true">Email</item> <item name="filter" xsi:type="string">text</item> <item name="editor" xsi:type="array"> <item name="editorType" xsi:type="string">text</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </item> </argument> </column> <column name="telephone"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="visible" xsi:type="boolean">true</item> <item name="dataType" xsi:type="string">text</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">General</item> <item name="dataScope" xsi:type="string">telephone</item> <item name="label" xsi:type="string" translate="true">Telephone</item> <item name="filter" xsi:type="string">text</item> <item name="editor" xsi:type="array"> <item name="editorType" xsi:type="string">text</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </item> </argument> </column> <column name="comment"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="visible" xsi:type="boolean">true</item> <item name="dataType" xsi:type="string">text</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">General</item> <item name="dataScope" xsi:type="string">comment</item> <item name="label" xsi:type="string" translate="true">Comment</item> <item name="filter" xsi:type="string">text</item> <item name="editor" xsi:type="array"> <item name="editorType" xsi:type="string">text</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </item> </argument> </column> <column name="created_at" class="Magento\Ui\Component\Listing\Columns\Date"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="filter" xsi:type="string">dateRange</item> <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item> <item name="dataType" xsi:type="string">date</item> <item name="label" xsi:type="string" translate="true">Created On</item> </item> </argument> </column> <actionsColumn name="actions" class="Ksquare\General\Ui\Component\Listing\Column\Actions"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="resizeEnabled" xsi:type="boolean">false</item> <item name="resizeDefaultWidth" xsi:type="string">107</item> <item name="indexField" xsi:type="string">id</item> </item> </argument> </actionsColumn> </columns> </listing>
If this help then click on Accept as Solution and Kudos
Thank you
Hiren Patel
Just stumbled upon this, it happens when the table id column is named different than "id".
In the `<dataSource><settings><storageConfig>` node make sure to set the "indexField"properly when having a custom named id column.
<dataSource ...> <settings> <updateUrl path="mui/index/render"/> <storageConfig> <param name="indexField" xsi:type="string">CUSTOM_id</param> </storageConfig> </settings> </dataSource>
* Used on M2.3.5
yes, it's working, lol, I have debugged everything, but no luck...
your solution working well good job