_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.