3

マジェントグリッドで

a)コレクションの準備中に、クエリでいくつかの計算を行い、それらの値を追加の列として取得しました-

ex - select 1 as extracolumn

filter_indexこの列を設定して並べ替えるにはどうすればよいですか

また

filter_indexb) レンダリングを使用してカスタム データを列に表示しています。この列を設定して並べ替えるにはどうすればよいですか

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 に答える