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.