Как добавить кнопку в CGridView?

Звучит просто, правда? Я искал высоко и низко, и я не могу узнать, как это сделать. У меня есть CGridView:

$dataProvider = new CArrayDataProvider ($auctions);
$this->widget('zii.widgets.grid.CGridView', array(
  'dataProvider'=>$dataProvider,
  'columns'=>array(
    'id::ID',
    'product.title::Title',
    'state::Status',
  ),
));

Я хочу добавить четвертый столбец, который содержит только простую кнопку, которая будет выполнять javascript при нажатии. Я пробовал:

array(
  'class' => 'CButtonColumn',
),

Это просто дает мне ошибку:

Undefined property: stdClass::$primaryKey

Есть идеи?


person coderama    schedule 21.11.2012    source источник
comment
Вы также можете вставить трассировку стека?   -  person bool.dev    schedule 22.11.2012


Ответы (2)


Попробуй это:

$dataProvider = new CArrayDataProvider ($auctions);
$this->widget('zii.widgets.grid.CGridView', array(
  'dataProvider'=>$dataProvider,
  'columns'=>array(
    'id::ID',
    'product.title::Title',
    'state::Status',
     array(
         'type' => 'raw',
         'value' => '<button onclick=\'alert("It works!")\' value="clickme"/>'
     )
  ),
));
person Rizky Ramadhan    schedule 21.11.2012

Лучше всего это сделать с помощью CButtonColumn::template и CButtonColumn::buttons.

array(
    'class' => 'CButtonColumn',
    'template' => '{view} {update} {delete} {copy}',
    'buttons'=>array(
        'copy' => array(
            'label'=>'Copy', // text label of the button
            'url'=>"CHtml::normalizeUrl(array('copy', 'id'=>\$data->id))",
            'imageUrl'=>'/path/to/copy.gif',  // image URL of the button. If not set or false, a text link is used
            'options' => array('class'=>'copy'), // HTML options for the button
        ),
    ),
),

В этом примере есть три кнопки по умолчанию и одна пользовательская кнопка «Копировать». Если вам не нужны некоторые кнопки по умолчанию (например, просмотр, обновление и удаление), вы можете удалить их. Затем определите свойства добавленной кнопки. Я определил параметры метки, URL, изображения и HTML.

person Nikos Tsirakis    schedule 21.11.2012