首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cgridview中按查找的值过滤

在Cgridview中按查找的值过滤
EN

Stack Overflow用户
提问于 2013-07-19 15:22:32
回答 1查看 163关注 0票数 0

我早年的日子。我已经搜索了,但在这篇帖子上找不到任何线索。我已经修改了admin.php布局,以便从两个相关的表中查找值,如下所示

代码语言:javascript
复制
<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'silo-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
            'id',
            array(
                    'name'=>'silo_id',
                    'value'=>'$data->silo->name',
                    'header'=>'Parent',
            ),
            'name',
            array(
                    'name'=>'silo_type',
                    'value'=>'$data->siloType?$data->siloType->type:"no silo type"',
            ),
            array(
                    'class'=>'CButtonColumn',
            ),
    ),
)); ?>

这是伟大的,所有的工作……除了过滤器字段仍在查找数值而不是文本值之外(例如,我希望根据文本'description‘而不是表示该描述的UID进行过滤)。

我该如何着手改变这一点呢?谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-07-20 09:10:47

一种快速的方法是使用下拉列表而不是文本字段作为筛选字段。您可以按如下方式填充此内容

代码语言:javascript
复制
'name'=>'silo_id',
....
'filter'=>CHtml::listDataEx(Silo::model()->findAll(),'id','name')

一种更长、更复杂的方法是修改查询,使其包含对外部字段的搜索。您需要存储搜索词。对于单个这样的字段,您需要

  1. 将公共字段添加到模型中,例如$silo_name
  2. 在模型的rules()方法中将此字段设置为safe
  3. 将required columns过滤器设置为

‘’filter‘=>CHtml::activeTextField( 'silo_name')

  • Finally,$model编辑模型的search()方法以反映上述内容

$criteria->一起=true;//执行单个查询$criteria->with=array(‘思洛’=>array(‘id’,‘’));//指定要添加到查询中的关系$criteria->compare('silo.name',$this->silo_name,true);//$silo_name是公共字段

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17740305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档