Atualizando Uma Div

Preciso de atualizar uma TbGridView que esta dentro de uma div.

Alguem tem algum material, tutorial ou artigo?

Olá, você precisa atualizá-la após o quê ?

Um click de um botão ajax ?

Se for, segue um exemplo:

No botão, especifique uma função no success das opções Ajax:




$this->widget('bootstrap.widgets.TbButton', array(

	'icon' => 'icon-plus',

	'size' =>'medium',

	'type' => 'warning',

	'buttonType' => 'ajaxButton',

	'url' => $this->createUrl('addItem'),

	'htmlOptions'=>array('id'=>'btn_addproduto'),

			'ajaxOptions'=>array('type'=>'POST',

			 'success'=>'allFine', 

			 'url' => 'js:$(this).attr("href")',

			),

		));



Sua GridView ficará dentro de uma DIV identificada com um ID, que está dentro de uma página secundária… para receber um render específico para ela.




<div id="div_itens">	

<?php 

$this->widget('bootstrap.widgets.TbGridView',array(

	'id'=>'itens-grid',

	'template'=>"{items}",

	'dataProvider'=>$dp_itens,

	'type'=>'striped bordered condensed',

	'columns'=>$gridColumns,

	 )); 

?> 

</div>



No Javascript, coloque o $(’#div_itens’).html(data); … ele faz a autalização do Html que você receberá do Controller.




/*********************************************************************

 * Ajusta campos da tabela de Itens

 *********************************************************************/

function allFine(data) {

        // display data returned from action

        $('#div_itens').html(data);


	// Calcula totais da página principal

	f_ajusta_totais_venda();

	f_ajusta_totais_parcelas();

		

	// Limpando os campos de pesquisa

        $('input#add_id').val('');

        $('input#searchproduto').val('');

        $('input#add_valor').val('');

        $('input#add_qtde').val('');

        $('input#add_desc').val('');

        $('input#add_total').val('');

        $('input#searchproduto').focus();

}



No Controller, deverá haver um renderPartial para atualizar apenas a página que está a GridView.




// Devolvendo os valores para a página		

$this->renderPartial('_griditens',array(

 'dp_itens'=>$dp_itens,

 'model_itens'=>$model_itens,

 'readonly'=>$readonly,

), false, false);



Não sei se te ajudei exatamente… mas essa é uma variação que usei para o meu caso, quando estava estudando a mesma necessidade. Me lembro de haver outras formas, algumas até mais simples. Mas não tenho aqui na minha documentação. Talvez alguém mais possa ajudar.

Se não te ajudou, explica melhor a situação que você precisa.

Abs,

Tirando o botão que fará o reload da div que esta dentro de uma janela modal, o restante do código é idêntico ao seu. mas mesmo assim o reload não acontece. Coloquei dentro do javascript allFine um alert(‘teste’); so para ver se o código acessava o script. E o alert foi executado e mostrou a mensagem

Olá … mas o que é essa janela modal ?

É tipo uma confirmação de excluão ou um prompt para informar alguma coisa ?

E aí … a div a ser atualizada está na janela anterior ?

Desculpa a demora, estava fazendo outros serviços.

Funciona assim: Na janela principal tenho um botão Adicionar. Clicando nele abre a a modal com os campos a serem preenchidos. Quando clico em salvar, na janela modal, os campos são adicionados no BD a janela modal fecha e a div(gridview) é atualizada com os dados que acabei de gravar.

So não esta funcionando a atualização.

Somente como informação, coloquei um alert(‘tetse’); dentro da função js, AllFine(), após a linha que deveria fazer a atualização da Div, somente para saber se esta estava sendo executada. E o alert(); esta sendo executado.

Se estiver usando um ActiveForm dentro do modal pode abandonar!

Tentei fazer isso ontem, procurei vários links e forum em ingles discutindo o por que do modal do bootstrap mata alguns javascript, e vi que no core do JS do bootstrap faz isso.

Que por final resolvi usar o modal do jquery UI. Se você estiver validando o form para adicionar os dados mostra ae como está sendo feito.

Solução:

http://queirozf.com/reminders/creating-a-modal-login-widget-using-yii-bootstrap-extension

Vlw Newerton,

A dica funcionou perfeitamente. :D