cancel
Showing results for 
Search instead for 
Did you mean: 

Not able to load collection after input search filter data

   Did you know you can see the translated content as per your choice?

Translation is in progress. Please check again after few minutes.

Not able to load collection after input search filter data

I have added 4 columns in the grid as displayed in below screenshot.

 

screenshot-expiadev.atlassian.net-2019.07.18-11_16_48.png

For displaying for eg. Recipient Email column I added following code in XML & it's renderer PHP file. (Code is added below)

 

app/code/Company/Module/view/adminhtml/layout/adminhtml_giftcardaccount_block.xml

<block class="Magento\Backend\Block\Widget\Grid\Column">
<arguments>
<argument name="header" xsi:type="string" translate="true">Recipient Email</argument>
<argument name="index" xsi:type="string">recipient_email</argument>
<argument name="renderer" xsi:type="string">Company\Module\Block\Adminhtml\Widget\Grid\Column\Renderer\Recipientemail</argument>
<argument name="sortable" xsi:type="boolean">false</argument>
</arguments>
</block>

app/code/Company/Module//Block/Adminhtml/Widget/Grid/Column/Renderer/Recipientemail.php

<?php
namespace Company\Module\Block\Adminhtml\Widget\Grid\Column\Renderer;
class Recipientemail extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer
{
protected $_storeManager;

public function __construct(
\Magento\Backend\Block\Context $context,
\Magento\Store\Model\StoreManagerInterface $storeManager, 
\Magento\Sales\Model\Order\Item $orderItem,
array $data = []
) {
parent::__construct($context, $data);
$this->_storeManager = $storeManager; 
$this->orderitem = $orderItem; 
}


public function render(\Magento\Framework\DataObject $row)
{
$code = $row->getCode();
$result = array();
$salesorderitem = $this->orderitem->getCollection()
->addFieldToFilter('product_options', array('like' => '%'.$code.'%'));

if(!empty($salesorderitem)) 
{
foreach($salesorderitem as $orderdata){
$productOptions = $orderdata->getProductOptions(); 
$recipientemail = $productOptions['giftcard_recipient_email'];
if(!empty($recipientemail)){
return $recipientemail;
}else{
return '-';
}
}
}else{
return '-';
}


}


**Main table of grid is - magento_giftcardaccount**

**Recipientemail table is - product_options**

{"info_buyRequest":{"uenc":"aHR0cDovLzE5Mi4xNjguMS4xODQvZGcvZHJ1bW1vbmQtZ29sZi1lLWdpZnQtY2FyZC5odG1s","product":"76450","selected_configurable_option":"","related_product":"","giftcard_amount":"5","giftcard_sender_name":"test","giftcard_sender_email":"testmscgoriteeps@gmail.com","giftcard_recipient_name":"test22","giftcard_recipient_email":"arjun.cmarix@gmail.com","giftcard_message":"test test gift","qty":"1"},"giftcard_sender_name":"test","giftcard_sender_email":"testmscgoriteeps@gmail.com","giftcard_recipient_name":"test22","giftcard_recipient_email":"arjun.cmarix@gmail.com","giftcard_message":"test test gift","giftcard_lifetime":null,"giftcard_is_redeemable":0,"giftcard_email_template":null,"giftcard_type":"0","email_sent":0,"giftcard_created_codes":["HQE9EMUNTA6N"]}

 

My issue is the filter is not working. When I enter email in the search text field of grid it keeps on spinning for some time & grid is loaded as it is without filter.

 

It would be really appreciable if someone can guide me on how to filter this search text.