我在gridview中添加了一个列,它想显示事件的剩余天数。
$this->addColumn('calculate_days', array(
'header' => Mage::helper('myodule')->__('Remaining'),
'type' => 'options',
'width' => '200px',
'options' => $options,
'frame_callback' => array($this, 'getRemaining'),
'filter_condition_callback' => array($this, '_calculateFilter')
));
getRemaining
方法:
public function getRemaining($value, $row, $column)
{
// some calculation to find out remaining days based on some conditions
return $days;
}
如果我未指定index
键,则单击Remaining
列将不起作用。因此,我已将index
键添加到addColumn
中,如下所示:
$this->addColumn('calculate_days', array(
'header' => Mage::helper('myodule')->__('Remaining'),
'type' => 'options',
'width' => '200px',
'index' => 'created_at',
'options' => $options,
'frame_callback' => array($this, 'getRemaining'),
'filter_condition_callback' => array($this, '_calculateFilter')
));
现在排序是有效的,但不正确。当我指定index
时,按index
列应用排序(在这种情况下,将按created_at
排序),但我想按剩余天数排序。
我应该怎么做才能解决这个问题?还是有sort callback
?
答案 0 :(得分:0)
为什么不将此值添加为该网格中的新字段?然后每天通过cronjob更新此字段值。
然后,您将以本机方式对项目进行排序,并且避免每次查看过滤器时都要重新计算每个值。
希望有帮助, 问候