Magento provides lot of inbuild functionalities. Using “protected function _prepareColumns()” function we can create or add new column to the grid.
Like:
protected function _prepareColumns()
{
$this->addColumn('first_name', array(
'header' => Mage::helper('custommodule')->__('First Name'),
'align' => 'left',
'width' => '50px',
'index' => 'first_name',
));
$this->addColumn('last_name', array(
'header' => Mage::helper('custommodule')->__('Last Name'),
'align' => 'left',
'width' => '50px',
'index' => 'last_name',
));
}
But sometimes we have lot of columns for our custom module and we need to merge two columns to single column. So what we have to do?
I explain you how can we do this by programmatically: We can use ‘Renderer’ terms to combine two columns.
Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
Step1: Firstly, create a new folder ‘Renderer’ inside the Block/Adminhtml folder of your custom plugin.
Step2: Make a new file called ‘CustomerName.php’ with the below contents:
class Company_Custommodule_Block_Adminhtml_Renderer_CustomerName extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
public function render(Varien_Object $row) {
if ($row->getData('first_name') != NULL || $row->getData('last_name') != NULL) {
$firstName = $row->getData('first_name');
$lastName = $row->getData('last_name');
if ($lastName != NULL) {
return $firstName . ' ' . $lastName;
} else {
return $firstName;
}
} else {
return Mage::helper('dailydeal')->__('NO NAME ASSIGNED');
}
}
}
Step3: Then, in the grid, make a new column with calling above rendrerer file:
protected function _prepareColumns()
{
$this->addColumn('first_name', array(
'header' => Mage::helper('custommodule')->__('First Name'),
'align' => 'left',
'width' => '100px',
'index' => 'first_name',
'renderer' => new Company_Custommodule_Block_Adminhtml_Renderer_CustomerName(),
));
}
I hope it will work for you too…. 🙂
Leave a Reply