如何在GridView的警予加选择2延伸柱(how to add select2 extension

2019-10-18 17:49发布

我想在一列加选择2扩展GridView 。 我怎样才能做到这一点? 此外,我只想用选择2 Yii的扩展,而不是使用它的纯库。

Answer 1:

我创建扩展CDataColumn的过滤器添加到列一类:

Yii::import('zii.widgets.grid.CDataColumn');

class TbTableDeviceType extends CDataColumn {
    public $model;
    public $fieldName;

    public function init() {
        $ajaxUpdate = $this->grid->afterAjaxUpdate;
        $this->grid->afterAjaxUpdate = "function(id,data){'.$ajaxUpdate.' 
                $('#" . get_class($this->model) . "_" . $this->fieldName .     "').select2({placeholder:' ', allowClear: true});
        }";
    }

    /**
     * Renders the filter cell.
     */
    public function renderFilterCell() {
        echo '<td><div class="filter-container">';
        $deviceTypes = Helper::getDeviceTypesArray();
        $deviceTypes[''] = ''; // Add empty value to select all
        asort($deviceTypes);
        $this->filter = $deviceTypes;
        $model = $this->model;
        $field = $this->fieldName;
        if (empty($model->$field))
            echo CHtml::dropDownList(get_class($this->model) . '[' . $this-    >fieldName . ']', $this->fieldName, $deviceTypes);
        else
            echo CHtml::dropDownList(get_class($this->model) . '[' . $this->fieldName . ']', $this->fieldName, $deviceTypes, array(
                'options' => array(
                    $model->$field => array(
                        'selected' => true
                    )
                )
            ));
        Yii::app()->controller->widget('ext.ESelect2.ESelect2', array(
            'selector' => '#' . get_class($this->model) . '_' . $this-    >fieldName,
            'data' => $deviceTypes,
            'options' => array(
                'placeholder' => ' ',
                'allowClear' => true
            ),
            'htmlOptions' => array(
                'minimumInputLength' => 2,
                'style' => 'width:100%'
            )
        ));
        echo '</div></td>';
    }
}

然后你这个列添加到您的cgridview:

array(
    'class' => 'ext.widgets.TbTableDeviceType',
    'model' => $model,
    'fieldName' => 'deviceType_id',
    'name' => 'deviceType_id',
),


Answer 2:

使用下面的方式来显示你的GridView列中选择2,希望它帮助。

array(            
      'name'=>'category_id',
      'type'=>'html',
      'value'=>'select2::activeDropDown($model,"my_select",CHtml::listData($dataToShowFromModel,"field_name_for_value","field_name_for_text"),array("empty"=>"","placeholder"=>"Please Select",select2Options=>array("allowClear"=>true)))'
)


Answer 3:

看到这个例子的Yii的GridView

鉴于例如:admin.php的

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'title',          // display the 'title' attribute
        'content:html',   // display the 'content' attribute as purified HTML
        array(            // display 'create_time' using an expression
            'name'=>'category_id',
            'type'=>'html',
            'value'=>'Post::model()->getSelectTwo()',
        ),
        array(            // display 'author.username' using an expression
            'name'=>'authorName',
            'value'=>'$data->author->username',
        ),
        array(            // display a column with "view", "update" and "delete" buttons
            'class'=>'CButtonColumn',
        ),
    ),
));

在post.php中模型

public function getSelectTwo(){
    $categories = Category::model()->findAll();
    $data = array();
    foreach($categories as $category){
        $data[$category->id] = $category->title;
    }

    $this->widget('ext.select2.ESelect2',array(
      'name'=>'category_id',
      'data'=>$data,
      'htmlOptions'=>array(
      ),
    ));

}

看到更多的Yii教程http://www.codexamples.com/



文章来源: how to add select2 extension column in yii gridview
标签: gridview yii