/**
  * Creates column objects and initializes them. 
  * Automatically add hidden checkbox column.
  */
 protected function initColumns()
 {
     parent::initColumns();
     if ($this->selectableRows == 0) {
         return;
     }
     //define primaryKey expression
     if ($this->dataProvider instanceof CActiveDataProvider) {
         $primaryKey = '$data->primaryKey';
     } else {
         $primaryKey = '$data["' . $this->dataProvider->keyField . '"]';
     }
     $checkedExpression = 'isset($_GET["' . $this->selVar . '"]) ? in_array(' . $primaryKey . ', is_array($_GET["' . $this->selVar . '"]) ? $_GET["' . $this->selVar . '"] : array($_GET["' . $this->selVar . '"])) : false;';
     //if gridview already has user defined Checkbox column --> set "checked" and exit
     //thanks to Horacio Segura http://www.yiiframework.com/extension/selgridview/#c7346
     foreach ($this->columns as $col) {
         if ($col instanceof CCheckBoxColumn) {
             $col->checked = $checkedExpression;
             $col->init();
             return;
         }
     }
     //creating hidden checkbox column
     $checkboxColumn = new CCheckBoxColumn($this);
     $checkboxColumn->checked = $checkedExpression;
     $checkboxColumn->htmlOptions = array('style' => 'display:none');
     $checkboxColumn->headerHtmlOptions = array('style' => 'display:none');
     $checkboxColumn->init();
     $this->columns[] = $checkboxColumn;
 }
示例#2
0
    public function initColumns()
    {
        $this->dataProvider->model->onBeforeGridInitColumns(new CModelEvent($this));

        if ($this->mass_removal)
        {
            $this->addColumn(array(
                                  'class'               => 'CCheckBoxColumn',
                                  'header'              => "<input type='checkbox' class='object_checkboxes'>",
                                  'selectableRows'      => 2,
                                  'checkBoxHtmlOptions' => array(
                                      'class'    => 'object_checkbox'
                                  )
                             ));
        }

        parent::initColumns();
        $this->dataProvider->model->onAfterGridInitColumns(new CModelEvent($this));
    }
示例#3
0
    public function initColumns()
    {
        $button_column_exists = false;

        $attributes_columns = $this->columns;
        foreach ($attributes_columns as $i => $data)
        {
            if (isset($data['class']))
            {
                if ($data['class'] == 'CButtonColumn')
                {
                    $button_column_exists = true;
                }

                unset($attributes_columns[$i]);
            }
        }

        if (!$attributes_columns)
        {
            $model = $this->filter;

            $attributes = WidgetManager::getVisibleColumns(get_class($model), $this->id);

            if ($attributes)
            {
                foreach ($attributes as $i => $attribute)
                {
                    $this->addColumn(
                        array(
                            'name'  => $attribute,
                            'value' => '$data->value("' . $attribute . '")',
                            'type'  => 'raw',
                            'filter' => $model->filter($attribute),
                        ),
                        $i
                    );
                }
            }
        }

        if (!$button_column_exists)
        {
            $this->addColumn(array('class' => 'CButtonColumn'), count($this->columns) + 1);
        }

        if ($this->many_many_sortable)
        {
            $this->addColumn(array(
                'class' => 'ext.sortable.ManyManySortableColumn',
                'header'=> t('Сортировка')
            ), -1);
        }

        if ($this->sortable)
        {
            $this->addColumn(array(
                'class' => 'ext.sortable.SortableColumn',
                'header'=> t('Сортировка')
            ), -1);
        }

        if ($this->mass_removal)
        {
            $this->addColumn(array(
                'class'               => 'CCheckBoxColumn',
                'header'              => "<input type='checkbox' class='object_checkboxes'>",
                'selectableRows'      => 2,
                'checkBoxHtmlOptions' => array(
                    'class'    => 'object_checkbox'
                )
            ));
        }

        parent::initColumns();
    }