Ayuda con CGridView y CCheckBoxColumn

Hola foro,

Este es el panorama, tengo una barra de botones: Detalles, Editar, Nuevo, Borrar; y tengo un grid que me muestra los registros de un catálogo, ya puse en el grid la columna de checkbox con CCheckBoxColumn.

Lo que quiero hacer es por ejemplo, seleccionar un registro del grid marcando el checkbox y poder ver los detalles o editarlo o borrarlo; si alguien me puede ayudar con un ejemplo… gracias.




<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'usuarios-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

		array( 'class'=>'CCheckBoxColumn',

			'value'=>'$data->idusuario',

			'selectableRows'=>10,

			'id'=>'chk',

		),

		'idusuario',

		'usuario',

		'telefono',

		'estado',

	),

)); ?>



Adjunto una imagen con la idea.

Saludos.

Arturo Ramos

www.ircsasoftware.com.mx

Cancún, México.

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.

buen post jejeje que bueno que ya lo resolviste

Hola, alguno sabe como recuperar el valor de la grilla, ademas del ID.

Es decir por ejemplo yo tengo importes y necesito, sumar, restar segun si selecciona o no una fila.

Saludos