Yii Framework Forum: Tengo un problema con "CButtonColumn" en un CGridView - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Tengo un problema con "CButtonColumn" en un CGridView Los botones apuntan a otro modelo! Rate Topic: -----

#1 User is offline   Juan Pablo Sala 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 16-June 09

Posted 29 July 2010 - 10:41 AM

Hola a todos

Estoy intentando aprender a usar el yii haciendo un proyecto para un cliente, uno bastante sencillo.
Básicamente es para llevar un stock de los equipos (es un colegio) y quizá expandirlo un poco para llevar un control de tickets.
Como parte del modelo tengo items (los equipos), componentes (memoria,disco,video etc.) y una clase intermedia, ItemComponente.
Me gustaría no solo pedir ayuda para solucionar los problemas puntuales que voy encontrando sino también para pedir que me vayan mostrando el camino hacia el buen uso del framework, a veces no me alcanza con pasarme muchísimas horas leyendo el foro y la documentación para entender como hacer, quizá ayude a otros newbies como yo!! :)
Bueno aquí va un problema puntual con un poco de código para que me orienten:

Tengo por un lado el controlador de Item, en realidad la acción Index:
public function actionIndex()
{
	   $dataProvider=new CActiveDataProvider('item', array(
                'pagination'=>array(
                'pageSize'=>4
              ))
           );

	$this->render('index',array(
		'dataProvider'=>$dataProvider,
	));
}

public function actionBorraComponente()
{
        if(Yii::app()->request->isAjaxRequest)
        {

          $data = itemComponente::model()->findByPk($_POST['itemComponente']);
          $data->delete();
          Yii::app()->end();
        }
}

El view al que llamo arriba:
<?php
$this->breadcrumbs=array(
	'Items',
);

$this->menu=array(
	array('label'=>'Create item', 'url'=>array('create')),
	array('label'=>'Manage item', 'url'=>array('admin')),
);
?>

<?php
$listaComponentes = CHtml::DropDownList(
          'idComponente','',
          CHtml::listData(Componente::model()->findAll(), 'id', 'nombre'));
?>

<input type="hidden" value=<?php echo "'".$listaComponentes."'";?> id="listaComponentes"/>


<h1>Equipos</h1>

<?php $this->widget('zii.widgets.CListView', array(
	'dataProvider'=>$dataProvider,
	'itemView'=>'_view',
	'template'=>"{items}\n{pager}",

));

?>
<script type="text/javascript">
/*<![CDATA[*/

function selectionChanged(grid){
  var componente_id = $.fn.yiiGridView.getSelection(grid);
  var buttonBorrar=
    '<input type="button" style="font-size:8" '+
     'value="borra el componente selectionado" id="btnBorrar" '+
     'onClick="borra('+ "'" + grid + "'," + "'" + componente_id + "'"  +')" '+
     '/>';
   
  var buttonAgregar=
    '<input type="button" '+
     'value="Agrega componente" id="btnAgregar" '+
     'onClick="Agrega('+ "'" + grid +')"/>';
  var div = '<div id="divBorrar">' + buttonBorrar + '<br>' + $('#listaComponentes').val() + buttonAgregar +  '</div>';
  $('#divBorrar').remove();

  $("#"+grid).append(div);
}

function borra(grid,componente_id){
  jQuery.ajax({
    cache: true,
    url: "index.php?r=item/borraComponente",
    data:{'itemComponente':componente_id},
    type:'POST',
    success: function(){
      //jQuery(this).prepend(data);

      $.fn.yiiGridView.update(grid);
    }
  });
}
/*]]>*/

</script>


_view.php, el view parcial al que llama el cListView de arriba:


$dataProvider=new CActiveDataProvider('ItemComponente', array(
  'criteria'=>array(
      'condition'=>sprintf('t.item_id=\'%s\'',$data->id),
      'with'=>array('componente'),
  ),
  'pagination'=>array(
      'pageSize'=>4,
  ),
));

$this->widget('zii.widgets.grid.CGridView', array(
  'id'=>'gridComponente'.$data->id,
  'selectionChanged'=> 'selectionChanged',
  'dataProvider' => $dataProvider,
  'summaryText'=>'',
  'columns' => array(
     array(
        'name'=>'componnete_id',
        'value'=>'$data->componente->id',
        'htmlOptions'=>array('display'=>'none'),
         'visible' => false
      ),
     array(
        'name'=>'',
        'value'=>'$data->componente->nombre',
        'htmlOptions'=>array('width'=>'190')
      ),
     array(
        'name'=>'',
        'value'=>'$data->cantidad',
        'htmlOptions'=>array('width'=>'50')
      ),
      array( 'name'=> '', 'type' => 'raw', 'value' => '' ),
      array(
        'class'=>'CButtonColumn',
		),    )
  )
);


Lo que me pasa con este código es que los botones del grid de componente llaman a las acciones del item! y no se que mirar.
De paso dejé un poco de código del cliente donde jugué con jquery para que si alguien tiene algo de tiempo me de algún consejo.

Graciassss
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users