Bueno, recopilando un poco de aquí y de allá…
Hay dos funciones disponibles en el CGridView:
$.fn.yiiGridView.getSelection = function(id)
$.fn.yiiGridView.getChecked = function(id,column_id)
getSelection: regresa el(los) valor(es) de la(s) clave(s) (key values) de la(s) fila(s) seleccionadas. Una fila se selecciona haciendo click sobre la misma en el grid; no se refiere a un checkbox (CCheckBoxColumn).
getChecked: regresa el(los) valor(es) de la(s) clave(s) (key values) de la(s) fila(s) marcada(s) (checked). Aquí se hace referencia a la columna CCheckBoxColumn.
Este es el código de mi Grid.
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'usuarios-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'selectionChanged'=>'userClicks',
'columns'=>array(
array( 'class'=>'CCheckBoxColumn',
'value'=>'$data->idusuario',
'selectableRows'=>10,
'id'=>'chk',
),
'idusuario',
'usuario',
'telefono',
'estado',
),
)); ?>
Primero, sobre la línea 5 de este código.
'selectionChanged'=>'userClicks',
Indica que cada que la que se seleccione una fila(un registro) del CGridView se ejecute userClicks() que muestra un mensaje con la clave (key value) seleccionado, este es el código.
<script type="text/javascript">
function userClicks(target_id) {
alert($.fn.yiiGridView.getSelection(target_id));
}
</script>
Si pongo un par de botones con este código:
<table width="100%">
<tr>
<td>
<?php echo CHtml::imageButton('images/iconos/blog.png',
array('width'=>16, 'heigth'=>16, 'onclick'=>'muestraSelec()'));?>
<?php echo CHtml::imageButton('images/iconos/search.png',
array('width'=>16,'heigth'=>16,'onclick'=>'muestraChkd()'));?>
</td>
</tr>
</table>
Que ejecutan este código:
<script type="text/javascript">
function muestraSelec()
{
idsel = $.fn.yiiGridView.getSelection('usuarios-grid');
alert(idsel);
return;
}
function muestraChkd()
{
idsel = $.fn.yiiGridView.getChecked('usuarios-grid', 'chk');
alert(idsel);
return;
}
</script>
muestraSelec(), Muestra un alert con la clave (key value) del registro seleccionado.
muestraChkd(), Muestra un alert con la clave (key value) del registro marcado con CCheckedBoxColumn.
Ahora, es correcto en la filosofía de Yii meter código javascript en las vistas ?, pero ese es otro tema.
Espero que les sea de ayuda y sus comentarios.
Saludos.