3

Magento 网格中

a)在准备集合时,我在查询中进行了一些计算,并将这些值作为额外的列 -

ex - select 1 as extracolumn

现在如何filter_index在此列上设置和排序

或者

b) 我正在使用渲染在列中显示自定义数据,如何filter_index在此列上设置和排序

4

3 回答 3

2

我尝试了 shadowice222 的建议,但它不允许我在现场进行过滤。查看核心代码,它抱怨未定义“my_column”。使用 addExpressionAttributeToSelect 与内部操作相同,但也会添加列。

空数组将绕过执行变量替换的代码,因为它会尝试将 Zend_Db_Expr 转换为字符串。也许更好的方法是将类扩展为具有 addZendDbExptToSelect 方法。

protected function _prepareCollection()
{
    ...
    $collection->addExpressionAttributeToSelect('my_column', new Zend_Db_Expr("(some expression)"), array());
    ....
}
于 2012-04-16T15:58:28.820 回答
1
protected function _getFlatExpressionColumn($key) {
    switch ($key) {
        case 'my_column':
            $result = new Zend_Db_Expr("(some expression)");
            break;
    }
}

protected function _prepareCollection()
{
    ...
    $col->getSelect()
        ->columns(array(
            'my_column' => $this->_getFlatExpressionColumn('my_column'),
        ))
    ;
    ...
}

protected function _prepareColumns()
{
    ...
    $this->addColumn('my_column', array(
        'header'        => $hlp->__('My Column Title'),
        'index'         => 'my_column',
        'filter_index'  => $this->_getFlatExpressionColumn('my_column'),
    ));
    ...
}
于 2012-03-15T13:22:25.580 回答
0

显示如何使用此功能:

Mage_Adminhtml_Block_Widget_Grid::_addColumnFilterToCollection

在这里您可以为渲染器数据制作过滤器

于 2011-08-29T14:50:46.443 回答