1

以下はview.phpファイルの私のコードです

$this->widget('zii.widgets.grid.CGridView', array(
        'id' => 'myGrid',
        'dataProvider' => $model->search(),
        'filter' => $model,
        'enableSorting' => true,
        'columns' => array(
            array(
                'name' => 'id',
                'header' => 'ID',
                'value' => $data->id,                
            ),
            array(
                'header' => 'Value', 
                'value' => '$data->getValue($data->id)', //getValue($id) is a custom method in the model.php file which returns a value after some calculations                    
                'filter' => $model->listOfFilterValues(), //listOfFilterValues() is a custom method in the model.php file which returns a CHtml::listData
            ),            
        ),
       )
    );

ご覧のとおり、model.php ファイルでカスタム メソッドを使用して Value 列を取得しています (クエリから取得できないため)。gridView が表示され、ドロップダウン リストが表示されます。今まで正常に動作します。

問題は、ドロップダウン ([値] 列) を使用したフィルタリングが機能しないことです。(クエリ出力の列ではないため)また、値列(列ヘッダーをクリックしたとき)の並べ替えも機能しません。

これを行う方法はありますか?あなたの助けは非常に高く評価されています。ありがとうございました。

4

1 に答える 1

1

これを試して:

モデル内:

class Plans extends BasePlans
{
 ...
public $planTypeSearch;
 ...

public function search() {    
...     
$criteria->compare('plan.plan_type', $this->planTypeSearch, true);
...
),
return new CActiveDataProvider($this, array(
    'criteria' => $criteria,
    'sort'=>array(
        'attributes'=>array(
            'planTypeSearch'=>array(
                 'asc'=>'plan.plan_type',
                 'desc'=>'plan.plan_type DESC',
             ),
         ),
     ),
 );

あなたの見解では:

array(
    'name'=>'planTypeSearch',
    'header'=> 'Plan Type',
    'value'=>'(isset($data->plan)) ? $data->plan->plan_type: null',
    'filter'=>isset($plans) ? CHtml::listData($plans, 'plan_type','plan_type') : NULL,
),
于 2013-06-10T13:12:12.127 に答える