Problema com botão após atualização da CGridView

Olá a todos,

Espero que seja o meu último tópico de 2011 hehe

Estou uma tela de histórico de parcelas.

Tenho 2(dois) accordion, um de 2011 e outro de 2012.

O Accordion de 2012 tenho 4 parcelas, que estão sendo mostrada em um CGridView, com botões de "Efetuar pagamento", "Remover pagamento" e "Enviar extrato".

Porém o botão "Remover pagamento" só é visualizado depois de "Efetuar pagamento". Até ae tudo bem!

Mais quando se clica no “Efetuar pagamento”, o botão “Remover pagamento” aparece depois do update da CGridView, porém no update a CGridView não cria o ‘ajax’ do botão “Remover pagamento”.

Código:




array(

	'class' => 'CButtonColumn',

	'template' => '{efetuarpagamento} {removerpagamento}',

	'buttons' => array(

		'efetuarpagamento' => array(

			'label' => 'Efetuar pagamento',

			'visible' => '$data->valorpago == "0.00"',

			'options' => array(

				'id' => 'efetuarpagamento_' . $model->ano,

				'class' => 'ui-state-highlight',

				'title' => 'Efetuar pagamento',

				'ajax' => array(

					'type' => 'POST',

					'url' => Yii::app()->createUrl(Yii::app()->controller->module->id . '/financeiroreceber/efetuarpagamento'),

					'dataType' => 'json',

					'success' => "function(){

										\$.fn.yiiGridView.update('financeiro-grid_2012');

									}",

					'data' => array(

						'id' => 'js:$(this).parent().siblings(":first").find("input").val()',

					)

				)

			)

		),

		'removerpagamento' => array(

			'label' => 'Remover pagamento',

			'visible' => '$data->valor == $data->valorpago',

			'options' => array(

				'id' => 'removerpagamento_' . $model->ano,

				'class' => 'ui-state-error',

				'title' => 'Remover pagamento',

				'ajax' => array(

					'type' => 'POST',

					'url' => Yii::app()->createUrl(Yii::app()->controller->module->id . '/financeiroreceber/removerpagamento'),

					'dataType' => 'json',

					'success' => "function(){

										\$.fn.yiiGridView.update('financeiro-grid_2012');

									}",

					'data' => array(

						'id' => 'js:$(this).parent().siblings(":first").find("input").val()',

					)

				)

			)

		),

	),

),



Como não consigo deixar alguma função sem funcionar, fiz uma adaptação.

Estou retornando o ano da data de lançamento, com o na função ‘success’ ficou assim:


\$.fn.yiiGridView.update('financeiro-grid_' + data.ano);

Bom eu resolvi este problema, mais também quero saber por que o CGridView não renderiza os botões?