如何在CGridView过滤器中包含CJuiAutoComplete?

时间:2011-04-01 17:37:42

标签: jquery-ui autocomplete filtering yii jquery-autocomplete

我有一个列出表格内容的网格视图,表格有author_id列。

现在我使用关系名称列语法author.username显示用户名。

是否可以允许用户在列过滤器中输入用户名,并支持CJuiAutoComplete,一些示例提示?

我的代码示例:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$model->with('author')->search(),
    'filter'=>$model,
    'columns'=>array(
        // ...
        array(
            'name'=>'author.username',
            'filter'=> // ?
        ),
        // ...
    ),
));

1 个答案:

答案 0 :(得分:3)

小部件有一个第三个参数,可以设置为true,这意味着它将返回一个字符串,并且不会呈现小部件CJuiAutoComplete。

widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$model->with('author')->search(),
    'filter'=>$model,
    'columns'=>array(
        // ...
        array(
            'name'=>'author.username',
            'filter'=> $this->widget('zii.widgets.jui.CJuiAutoComplete', $array_params, true),

        ),
        // ...
    ),
));

和$ array_params可以替换为以下ex:


          array(
            'name'=>'author_username',
            //'model'=>$model,
            'attribute'=>'city_eve',
            'sourceUrl'=>"/controller/action/",
            'options'=>array(
                'minLength'=>'2',
            ),
            'htmlOptions'=>array(
                'size'=>'36'
            ),
        )

并且您还必须在模型搜索方法中添加一些检查:


if($request->getQuery("author_username")){
            $criteria->addCondition(author.username=:author_username");
            $criteria->params[':author_username'] = $request->getQuery("author_username");
        }