Preciso de atualizar uma TbGridView que esta dentro de uma div.
Alguem tem algum material, tutorial ou artigo?
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.