繁体   English   中英

在CGridView Yii中有一个用于搜索的过滤器框

[英]there is filter box for searching in CGridView Yii

我用过CGridView这是我的代码:-

<?php $this->widget('bootstrap.widgets.TbGridView', array(
    'type'=>'striped bordered condensed',
    'dataProvider'=>$model->searchsecond(),
    'filter'=>$model,
    'columns'=>array(
        array('name'=>'id', 'header'=>'#'),
        array('name'=>'sparktype_id', 'header'=>'First name'),
       array(
            'class'=>'bootstrap.widgets.TbButtonColumn',
            'htmlOptions'=>array('style'=>'width: 50px'),
        ),
    ),
)); ?>  

这是我的输出 在此处输入图片说明

在“名字”选项卡下,这里有一个文本框,我想为此添加类。

这是此文本框的html

<div class="filter-container">
<input type="text" name="Spark[sparktype_id]">
</div>

我想向该输入标签添加新类。

提前致谢...

尝试

<?php $this->widget('bootstrap.widgets.TbGridView', array(
    'type'=>'striped bordered condensed',
      'filterCssClass'=>'your Css class'
    'dataProvider'=>$model->searchsecond(),
    'filter'=>$model,
    'columns'=>array(
        array('name'=>'id', 'header'=>'#'),
        array('name'=>'sparktype_id', 'header'=>'First name'),
       array(
            'class'=>'bootstrap.widgets.TbButtonColumn',
            'htmlOptions'=>array('style'=>'width: 50px'),
        ),
    ),
)); ?>  

您必须创建一个扩展CDataColumn类的类,并将其放入例如extensions文件夹中。

不要忘记在main.php配置中添加此文件夹以导入部分

'import'=>array(
   ...
   'application.extensions.*',
   ...
)

在其中,您必须重写renderFilterCellContent方法。

class MyDataColumn extends CDataColumn{
        public function __construct($grid) {
            parent::__construct($grid);
        }

        protected function renderFilterCellContent()
        {
                if(is_string($this->filter))
                        echo $this->filter;
                elseif($this->filter!==false && $this->grid->filter!==null && $this->name!==null && strpos($this->name,'.')===false)
                {
                        if(is_array($this->filter))
                                echo CHtml::activeDropDownList($this->grid->filter, $this->name, $this->filter, array('id'=>false,'prompt'=>''));
                        elseif($this->filter===null)
                                echo CHtml::activeTextField($this->grid->filter, $this->name, array('id'=>false, 'class'=>'HereIsMyClassNameForFilterInput'));
                }
                else
                        parent::renderFilterCellContent();
        }
    }

注意: echo CHtml::activeTextField(..., ..., ..., 'class'=>' HereIsMyClassNameForFilterInput '));

另外,在引导程序扩展的类TbDataColumn中,必须更改其扩展的类的名称。

class TbDataColumn extends MyDataColumn
{
...

如果要为每个输入添加不同的类,则可以:

  • 添加属性public $filterClass = ""; MyDataColumn类;

  • 更改echo CHtml::activeTextField($this->grid->filter, $this->name, array('id'=>false, 'class'=>'HereIsMyClassNameForFilterInput'));

    echo CHtml::activeTextField($this->grid->filter, $this->name, array('id'=>false, 'class'=>$this->filterClass));

  • 并在TbGridView小部件的column部分中设置此变量的值:

    'columns'=>array( ... array( 'name'=>'name', 'filterClass'=>'CustomClassForFilterInputInNameColumn' ), ... )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM