Apagando Objetos no CGridView

Senhores,

Solicito vossa ajuda:




(...)

array('class'=>'CLinkColumn', 'header'=>'Deletar', 'labelExpression'=>'Deletar', 'urlExpression'=>'Yii::app()->controller->createUrl("delete", array("id"=>$data->id))',),

(...)



Este código não esta funcionando no CGridView.

Poderiam me ajudar?

Grato,

Leonardo

Você pode usar o seguinte codigo para deletar o registro:




array(

                    'class'=>'CButtonColumn',

                    'template'=>'{delete}',

                    'deleteButtonUrl'=>'Yii::app()->createUrl("delete", array("id" => $data->id))',

		),



Falow brow

Valeu, funfou!!!

Ops, funfou mas nao funfou…

Consegui criar um link, com X e tudo, para cada item na grid, mas…

O nome do modelo é Projeto, e a action é delete, e ele deleta pelo ID, então a "rota" deveria ser:

(…)/projeto/delete/id/n, onde n é o número da ID do meu projeto, mas …

Não é isso q acontece, o link gerado é (…)/delete/id/n sem o projeto/ antes da action.

O q estou fazendo de errado?

Segue o código (index.php na view projeto):




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

		'dataProvider'=>$dataProvider,

		'filter'=>$model,

		'columns'=>array(

			array(

			   'class'=>'CLinkColumn',

			   'header'=>'Projeto',

			   'labelExpression'=>'$data->nome',

			   'urlExpression'=>'Yii::app()->controller->createUrl("view", array("id"=>$data->id))',

			),

			'dataInicioFormat',

			'dataUpdateFormat',				

			'nomeStatus',

			array(

				'class'=>'CButtonColumn',

				'header'=>'Editar',

				'template'=>'{update}',					

				'deleteButtonUrl'=>'Yii::app()->createUrl("update", array("id" => $data->id))',

			),				

			array(

				'class'=>'CButtonColumn',

				'header'=>'Apagar',

				'template'=>'{delete}',

				'deleteButtonUrl'=>'Yii::app()->createUrl("delete", array("id" => $data->id))',

			),

		),

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

	)

); 



Só tenho uma palavra pra descrever essa situação:

BI-ZA-RRO!!!!

Eu observei que o Edit estava funcionando e o delete não, então fui ver o código:




array(

   'class'=>'CButtonColumn',

   'header'=>'Editar',

   'template'=>'{update}',					

   'deleteButtonUrl'=>'Yii::app()->createUrl("update", array("id" => $data->id))',

),				

array(

   'class'=>'CButtonColumn',

   'header'=>'Apagar',

   'template'=>'{delete}',

   'deleteButtonUrl'=>'Yii::app()->createUrl("delete", array("id" => $data->id))',

),



Repare que chamei a url do edit de deleteButtonUrl, e ele funcionou perfeitamente… qndo ajustei para editButtonUrl, ele parou de funcionar pois não estava "roteando" para o modelo projeto, ou seja, a url ficou (…)/edit/id/n.

Depois dessa bizarrice, chamei a url do botão do delete de editButtonUrl e adivinhe o que aconteceu… FUNCIONOU!!!

Alguém poderia explicar o pq?!

Leonardo,

Eu to usando o padrão do CGridView.




...

array(

            'class' => 'CButtonColumn',

            'header' => 'Opções',

            'template' => '{update} {delete}',

            'deleteButtonLabel' => 'Remover',

            'deleteButtonImageUrl' => false,

),

..



Esse padrão que uso, ai ele já cria o ‘jQuery’ para essa grid, ao clicar no ‘Remover’, ele automaticamente me mostra a mensagem se desejo ou deletar.

Mais eu aperfeiçoei mais o CCridView, em cada linha tem um checkbox, e 1 botão fora da CGridView, que deleta todos selecionados.

Todas essas duas funções e executado o ‘$.fn.yiiGridView.update(‘table-grid’)’.

Para que não fique atualizando a página, e só a grid.

Bom se precisar de ajuda posta ae!