Diversas requisições ajax no cGridView

Fala galera blz?

Estou tendo um problema … espero que possam me ajudar …

seguinte, tenho um input em minha pagina onde digito o numero da matricula do funcionario e através de ajax ele me traz as informações desse funcionario … caso eu queira posso clicar em um botão pesquisa que me trará materiais que foram destinados a esse funcionario … esses materiais são exibidos em uma cGridView …

o problema que estou tendo é o seguinte … a cada funcionario pesquisado parece que uma nova GridView é criada apesar de exibir só uma …

um exemplo: vamos supor que pesquisei 2 funcionarios … o joão e depois o josé, porém o josé tem duas paginas de materiais … quando clico na segunda pagina duas requisições ajax são feitas … caso eu tivesse pesquisado 10 funcionarios, 10 requisições seriam feitas …

abaixo… um print … nesse caso eu ja tinha buscado 4 funcionarios … pesquisei um quinto funcionario observei as informações e cliquei em pesquisar … dai cliquei na terceira pagina de materiais deste funcionario … e então 5 requisições foram feitas como mostra o firebug na imagem abaixo

2527

imagem.jpg

realmente não estou achando o que pode ser … alguém tem alguma dica?

abraços

Ricardo,

Posta para nós o seu CGridView e o botão em ajax que você criou, já passei por está situação se não me engano era o botão de filtro que tinha eu definir cache => false.

a pagina é a index.php, a gridView é renderizada na view "_ajaxGrid" a cada vez que o botão pesquisar é clicado disponivel na view "_consulta"(deixei o javascript na pagina para facilitar o entendimento do que ocorre). Seguem as tres:

index.php




<?php $this->pageTitle=Yii::app()->name; ?>


<div style="width: 100%; text-align: center;">

	<h1><?php echo CHtml::encode(Yii::app()->name); ?></h1>

</div>

-->

<script>

var urlCompleta = $(location).attr('href');

var position = urlCompleta.indexOf('/index.php/');

var url = urlCompleta.substring(0, position);


function limpaGrid(){

	$('#req_res02').html('');

	$('#info').html('');

	$('#matricula').val('');

	$('#rs').val('');

	$('#nome').val('');

	$('#centro').val('');

	$('#nome_centro').val('');

	$('#info_rs').html('');	

}


</script>


<div id="forms">

	<?php $this->renderPartial('_consulta', null, !(VwMatEmpregado::podeBuscar(substr(Yii::app()->user->registro['registro'], 1)))); ?>

</div>

<br />

<div id="req_res02">

	<?php $this->renderPartial('_ajaxGrid', array('funcionario'=>$funcionario, 'modelo'=>$modelo, 'msg'=>$msg)); ?>

</div>




_ajaxGrid




<?php


$session = Yii::app()->session;

$model = $session['modelo'];




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

    'id'=>'person-grid2',

    'dataProvider'=>$model->search(),

    //'filter'=>$model,

	//'cssFile'=> Yii::app()->baseUrl . '/css/ricardo.css',

	//'htmlOptions' => array('class' => 'grid-view rounded'),

    'pager'=>array(

        'header'=>'',

        'firstPageLabel'=>'<<',

        'prevPageLabel'=>'anterior',

        'nextPageLabel'=>'proximo',

        'lastPageLabel'=>'>>',

    ),

    

    

    'columns'=>array(

    	

    	array(

	         'name' =>'funcionario.nr_rs',

	         'value' => '$data->funcionario->nr_rs',

         ),

         

         'matricula_funcionario',

         'nome',

    	'cdmatmcd',

		'nmmcd',

		'cdcautqem',

		//'qtoriqem',

		'qtqeqem',

		//'nralmqem',

		//'nrdocqem',

		'dtdocqem',

        

			

    

    ),

    

));



_consulta




<div class="form1">

<?php echo CHtml::beginForm(); ?>


<div class="row">

<?php echo CHtml::label('Matricula', 'matricula'); ?>

<?php echo CHtml::textField(

				'matricula', 

				"", 

				array(

					'size'=>6, 

					'onclick'=>"limpaGrid();",

					

				)

); 

?>


<?php echo CHtml::textField(

				'nome', 

				"", 

				array(

					'size'=>30, 

					'readonly'=>'readonly',

				)

); 

?>


<?php echo CHtml::textField(

				'centro', 

				"", 

				array(

					'size'=>6, 

					'readonly'=>'readonly',

				)

); 

?>


<!-- 

$imghtml=CHtml::image('server/gallery/'.$data->gallery.'/th_'.$data->picturenumber.'.jpg', $data->picturenumber.'.jpg');

echo CHtml::link($imghtml, array('view', 'id'=>$data->id));

-->


</div>

<div id="info"></div>

<?php

echo CHtml::ajaxSubmitButton(

	'Pesquisar',

	array('site/ajaxGrid'),

	array(

		'update'=>'#req_res02',

   

	)

);

//var_dump(VwMatEmpregado::classificaUser());

?>

<?php echo CHtml::endForm(); ?>

</div><!-- form -->








<div class="form2">

<?php echo CHtml::beginForm(); ?>


<div class="row">

<?php echo CHtml::label('RS', 'rs'); ?>

<?php echo CHtml::textField(

				'rs', 

				"", 

				array(

					'size'=>6, 

					'onclick'=>"limpaGrid();",

				)

); 

?>


<?php echo CHtml::textField(

				'nome_centro', 

				"", 

				array(

					'size'=>6, 

					'readonly'=>'readonly',

				)

); 

?>


<!-- 

$imghtml=CHtml::image('server/gallery/'.$data->gallery.'/th_'.$data->picturenumber.'.jpg', $data->picturenumber.'.jpg');

echo CHtml::link($imghtml, array('view', 'id'=>$data->id));

-->


</div>

<div id="info_rs"></div>

<?php

echo CHtml::ajaxSubmitButton(

	'Pesquisar',

	array('site/ajaxGrid'),

	array(

		'update'=>'#req_res02',


	)

	

);

?>


<?php echo CHtml::endForm(); ?>

</div><!-- form -->

<script>

$('#rs').keyup(function(){

	

	var dados = $("input[name='rs']");

	var urlCompleta = $(location).attr('href');


	var position = urlCompleta.indexOf('/index.php/');

	var url = urlCompleta.substring(0, position);


	//alert(dados.val());

	if(dados.val().length > 4){

		dados = $("input[name='rs']")

		

		$.ajax({

		    //Tipo do envio das informações GET ou POST

		    type: 'post',

		    //url para onde será enviada as informações digitadas

		    url: url + '/index.php/site/ajaxMatricula',

		    /*

		    * Parâmetros que serão carregados para a url selecionada (via POST).

		    * o form serialize passa de uma só vez todas as informações que estão

		    * dentro do formulário. Facilita, mas pode atrapalhar quando não for

		    * aplicado adequadamente a sua aplicação

		    */

		    data: dados,

		    beforeSend: function(){

		        /*

		        * Ação que será executada após o envio, no caso, chamei um gif

		        * loading para dar a impressão de garregamento na página

		        */

		        $('#loading').fadeIn(); },

		    //function(data) vide item 4 em $.get $.post

		    success: function(data){

		        //Tratamento dos dados de retorno.

		        //alert(data);


	        	var info = eval(data);

		        if(info[0].rs != null){

			        $('#nome_centro').val(info[0].descricao);

		        }     

	        

		    },

		    //Se acontecer algum erro é executada essa função

		    error: function(erro){

		        $('#loading').fadeOut();

		        $('#erroCadastro').fadeIn();

		    }

		});

	}


});


$('#matricula').keyup(function(){


	var urlCompleta = $(location).attr('href');

	var dados = $("input[name='matricula']");


	var position = urlCompleta.indexOf('/index.php/');

	var url = urlCompleta.substring(0, position);


	if(dados.val().length > 4){

		dados = $("input[name='matricula']")

		

		$.ajax({

		    //Tipo do envio das informações GET ou POST

		    type: 'post',

		    //url para onde será enviada as informações digitadas

		    url: url + '/index.php/site/ajaxMatricula',

		    /*

		    * Parâmetros que serão carregados para a url selecionada (via POST).

		    * o form serialize passa de uma só vez todas as informações que estão

		    * dentro do formulário. Facilita, mas pode atrapalhar quando não for

		    * aplicado adequadamente a sua aplicação

		    */

		    data: dados,

		    beforeSend: function(){

		        /*

		        * Ação que será executada após o envio, no caso, chamei um gif

		        * loading para dar a impressão de garregamento na página

		        */

		        $('#loading').fadeIn(); },

		    //function(data) vide item 4 em $.get $.post

		    success: function(data){

		        //Tratamento dos dados de retorno.

		        var info = eval(data);

		        if(info[0].nome != null){

		        	//$('#info').html(info[0].matricula + ' - ' + info[0].nome + ' - ' + info[0].rs);

			        $('#req_res02').html('');

					$('#nome').val(info[0].nome);

					$('#centro').val(info[0].rs);

			    }   

		        

		    },

		    //Se acontecer algum erro é executada essa função

		    error: function(erro){

		        $('#loading').fadeOut();

		        $('#erroCadastro').fadeIn();

		    }

		});

	}


});


$(':submit').click(function(){

	var urlCompleta = $(location).attr('href');

	var position = urlCompleta.indexOf('/index.php/');

	var url = urlCompleta.substring(0, position);

	

	$('#req_res02').html('<br /><br /><br /><br /><br /><br /><br /><br /><center><img src="'+url+'/images/ajax-loader.gif" /></center>');

});

</script>



Galera ainda estou passando por este problema … alguém tem alguma solução?!?

Abraço a todos