Pessoal, preciso da ajuda de vocês novamente.
Tenho uma Gridview, alimentada por um ArrayDataprovider.
Na última coluna, tenho os botões de Excluir e Atualizar.
Ao clicar nestes botões, executo um Ajax / Action no Controller para manipular os dados.
Abaixo estão três formas que encontrei, para incluir no parâmetro ‘columns’ da GridView.
O código abaixo, foi o mais próximo que consegui. Mas não sei como passar o ID para a função Javascript.
array(
'htmlOptions' => array('nowrap'=>'nowrap'),
'class'=>'bootstrap.widgets.TbButtonColumn',
'template'=>'{del}',
'buttons'=>array(
'del'=>array(
'label'=>'excluir',
'click'=>'function() {
var str = $("#compras01-form").serialize();
var id_item = "<<<<<<<<< PRECISO DO ID >>>>>>>>>>>>";
$.ajax({
type: "POST",
data: str,
url: "/xsanta/index.php?r=compras01/delItem&id="+id_item,
success: function(data) { $("#div_itens").html(data); },
})}',
),
),
),
Do jeito abaixo, não consigo nem ver o comando POST no Firebug:
array(
'name' => 'acoes',
'header' => 'acoes',
'type' => 'raw',
'value' => 'CHtml::ajaxLink(CHtml::Encode("Excluir"),
Yii::app()->controller->createUrl("delItem", array("id"=>$data)),
array("type"=>"POST", "success"=>"allFine"))',
),
Teoricamente, o 3o. jeito é o mais fácil pois consigo pegar o código ID da linha. Mas não consegui executar a action através e Ajax. Ele joga a URL completa no browser, e gera um erro. Eu tentei através de ajaxOptions também, mas não deu certo.
array(
'htmlOptions' => array('nowrap'=>'nowrap'),
'class'=>'bootstrap.widgets.TbButtonColumn',
'template'=>'{upd}{del}',
'buttons'=>array(
'upd' => array(
'url'=>'Yii::app()->controller->createUrl("editItem", array("id"=>$data["id"]))',
),
'del' => array(
'url'=>'Yii::app()->controller->createUrl("delItem", array("id"=>$data["id"]))',
'options' => array(
'ajax'=>array('type'=>'POST',
"success"=>"allFine",
'url' => 'js:$(this).attr("href")',
'cache' => 'false'
),
),
),
),
),
Já pesquisei demais, tentei todas as opções que meu fraco conhecimento permitia.
Agora preciso da ajuda de vocês,
Obrigado.