Yii Framework Forum: Cjuidialog + Cgridview + Dropdownlist - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Cjuidialog + Cgridview + Dropdownlist Rate Topic: -----

#1 User is offline   vgeorgo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 26-December 12
  • Location:Brazil

Posted 10 January 2013 - 12:06 PM

Estou carregando um CGridView e um DropDownList dentro de um CJuiDialog assim:

_serveds.php // Botão mais que vai carregar o CJuiDialog
<?php echo CHtml::ajaxLink(
	'<i class="icon-plus"></i>' . Yii::t('model', 'Add new served person'),
	$this->createUrl('person/corporation/personServePerson/renderSearchServed', array(
		'id'=>$model->id,
		'typePerson'=>$personType,
	)),
	array('update' => '#container-servepersonsearch'),
	array('class' => 'btn')
); ?>

<div id="container-servepersonsearch" style="visibility: hidden;"></div>


_searchPersonLink.php // Render do conteúdo do dialog
<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
	'id' => 'dialog-serveperson',
	'options' => array(
	'autoOpen' => true,
	'title' => Yii::t('model', 'Add new served person'),
	'modal' => true,
	'width' => 800,
	'heigth' => 650,
        'close'=>'js:function(){ $("#dialog-serveperson").remove(); }',
		'resizable'=>false,
	)
)); ?>

<div>
	<?php echo CHtml::dropDownList('cb-persontype', $typePerson, array(
		'I' => Yii::t('app', 'Individual'),
		'C'=>Yii::t('app', 'Corporation')),
		array(
			'id' => 'selected-typeperson',
		)
	); ?>
	<?php $this->widget('bootstrap.widgets.BootButton', array(
		'buttonType'=>'button',
		'type'=>'primary',
		'icon'=>'ok',
		'label'=>Yii::t('app', 'Search'),
		'htmlOptions'=>array(
			'id'=>'bt-searchserved'
		),
	)); ?>
</div>

<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'personserve-grid',
	'ajaxUpdate'=>true,
	'dataProvider'=>$dataProvider,
	'columns'=>array(
		'id',
		'person_full_name',
		'nickname',
		'datetime_inclusion',
		'status',
	),
)); ?>

<div class="modal-actions">
</div>

<?php $this->endWidget('zii.widgets.jui.CJuiDialog'); ?>

<?php Yii::app()->clientScript->registerScript('search', "
	jQuery('#selected-typeperson').change(function() {
		$.fn.yiiListView.update('personserve-grid', {
			type: 'GET',
			url: yiiAjaxUrlPersonServe + '?id=' + personId + '&typePerson=' + jQuery('#selected-typeperson:selected').val()
		});
	});
"); ?>


Nesse código tentei fazer algo que encontrei na internet, quando mudo o valor do DropDownList ele deveria atualizar o CGridView passando a URL com o parâmetro do valor selecionado.
Mas quando troco o valor o JS da um erro: '$.fn.yiiListView is undefined'

No Controller não parece haver nada errado, mas ai está o código dele.
$personId = $_REQUEST['id'];
$typePerson = $_REQUEST['typePerson'];
	
$form = new CActiveForm();
$dataProvider = new CActiveDataProvider('Person');
	
$this->renderPartial('_searchPersonLink', array(
	'personId'=>$personId,
	'typePerson'=>$typePerson,
	'form'=>$form,
	'dataProvider'=>$dataProvider,
), false, true);
		
Yii::app()->end();



Ai está meu problema, dentro de um dialog quero atualizar um CGridView enviando um parâmetro(valor do DropDownList) para o controller fazer o tratamento. Sei que no controller ainda não está sendo utilizado o $typePerson, mas quero primeiro conseguir atualizar o CGridView para depois montar um $criteria.

Não sei se a forma que eu estou tentando atualizar é funcional ou se é a melhor forma de se fazer isso. Não quero um campo que fique dentro do CGridView, pois os atributos não fazem parte do $model que eu estou carregando e porque depois eu precisaria adicionar novos parâmetros de busca.

Se não fui claro em alguma coisa eu explico novamente,
Obrigado,
Espero que possam ajudar.
0

#2 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 10 January 2013 - 07:40 PM

vgeorgo,

Tenta usar:

$.fn.yiiGridView.update();


Quando tiver usando CListView, ai sim voc~e usa:

$.fn.yiiListView.update();

Newerton Vargas de Araújo
0

#3 User is offline   vgeorgo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 26-December 12
  • Location:Brazil

Posted 11 January 2013 - 02:30 PM

Nossa, estava tão doido porque não estava funcionando que nem percebi que estava usando um elemento diferente, =/
Vou fazer o teste aqui e já posto se foi resolvido.

---- Edit ----
Bom, agora funcionou (com o comando certo vai ne o/)
Agora estou confuso sobre uma outra coisa.

Para renderizar meu Dialog com o CGridView executo a action:
public function actionRenderSearchServed()
{
	$personId = $_REQUEST['id'];
	$typePerson = $_REQUEST['typePerson'];
	
	$form = new CActiveForm();
	$dataProvider = new CActiveDataProvider('Person');
	
	$this->renderPartial('_searchPersonLink', array(
		'personId'=>$personId,
		'typePerson'=>$typePerson,
		'form'=>$form,
		'dataProvider'=>$dataProvider,
	), false, true);
	
	Yii::app()->end();
}


Caso eu vá atualizar o CGridView com o Ajax, mando para a mesma action ou tem algum tipo de retorno específico que tem que retornar para função???

Lembrando que eu estou fazendo esses comandos para atualizar:
jQuery('#selected-typeperson').change(function() {
	$.fn.yiiGridView.update('personserve-grid', {
		type: 'GET',
		url: yiiAjaxUrlPersonServe + '?id=' + personId + '&typePerson=' + jQuery('#selected-typeperson').val()
	});
});


---- Edit ----
Já sei o que estava errado ai em cima, minha variável 'yiiAjaxUrlPersonServe' devia estar vindo branca.

Agora uma dúvida, estou com o refresh com ajax funcionando, só que gostaria de saber como funciona, pois eu faço um renderPartial do dialog inteiro com minha action, e mesmo o comando $.fn.yiiGridView.update(); direciona para a Action que também renderiza esse mesmo partial, mas não perco nenhuma informação dos campos que eu já havia preenchido (o que me fez acreditar que não recarrega o conteúdo do render inteiro, mas somente o GridView), alguém sabe me explicar como isso funciona?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users