Estimados:
Necesito actualizar el siguiente dropboxlist sin que se refresque la págiana
<?php echo $form->dropDownList($model, 'nombre_prestacion', CHtml::listData(Prestacion::model()->findAll(), 'prestacion_id', 'prestacion_nombre'), array('empty' => 'Prestación...')); ?>
para ingresar prestaciones lo hago via ajax para que la pagina no se refresque, eso lo hago de la siguiente manera
en la vista tengo lo siguiente
<style type="text/css">
#modal {
width:100%; /*Toma el 100% del ancho de la página*/
height:100%; /*Toma el 100% del alto de la página*/
position:fixed; /*Con este código hacemos que el contenedor se mantenga en la pantalla y para que tome las dimensiones del body y no de la entrada*/
background-color: rgba(1, 1, 1, 0.9); /*Color de fondo, incluye opacidad del 90%*/
top:0; /*Position superior*/
left:0; /*Posición lateral*/
z-index:9999; /*Evitamos que algún elemento del blog sobreponga la ventana modal*/
}
#contenido-interno {
margin:140px auto; /*Separación arriba y centrado*/
font-size:12px; /*Tamaño de la fuente*/
width:600px; /*Ancho del contenedor*/
text-align:center; /*Alineación del texto*/
color:#222; /*Color del texto*/
background:#fff; /*Color de fondo*/
}
</style>
<script type="text/javascript">
function mostrareldiv() {
document.getElementById("modal").style.display = "block" ; // permite asignar display:block al elemento #modal
}
function ocultareldiv() {
document.getElementById("modal").style.display = "none" ; // permite ocultar el contenedor al hacer clic en alguna parte de éste mediante display:none en el elemento #modal
}
</script>
<div id="modal" style="display:none">
<div id="contenido-interno">
<?php $this->renderPartial('//prestacion/_formDialog', array('prestacion_model'=>$prestacion_model)); ?>
</div>
</div>
<img onclick="mostrareldiv()" border="0" src="images/signoMas.png" />
y la vista _formDialog es la siguiente
<script>
function realizaProceso(prestacion_codigo, prestacion_nombre, prestacion_descripcion, prestacion_precio_defecto){
var parametros = {
"prestacion_codigo" : prestacion_codigo,
"prestacion_nombre" : prestacion_nombre,
"prestacion_descripcion" : prestacion_descripcion,
"prestacion_precio_defecto" : prestacion_precio_defecto
};
var url = "<?php echo $this->createUrl('IngresarPrestacion'); ?>";
$.ajax({
url : url,
data: parametros,
type: 'POST',
beforeSend: function () {
$("#resultado").html("Procesando, espere por favor...");
},
success: function (response) {
$("#resultado").html(response);
document.getElementById("modal").style.display = "none" ; // permite ocultar el contenedor al hacer clic en alguna parte de éste mediante display:none en el elemento #modal
}
});
}
function ocultareldiv() {
document.getElementById("modal").style.display = "none" ; // permite ocultar el contenedor al hacer clic en alguna parte de éste mediante display:none en el elemento #modal
}
</script>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'prestacion-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>true,
)); ?>
<fieldset>
<div class="row">
<?php echo $form->labelEx($prestacion_model,'prestacion_codigo'); ?>
<?php echo $form->textField($prestacion_model,'prestacion_codigo'); ?>
<?php echo $form->error($prestacion_model,'prestacion_codigo'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($prestacion_model,'prestacion_nombre'); ?>
<?php echo $form->textField($prestacion_model,'prestacion_nombre',array('size'=>25,'maxlength'=>50)); ?>
<?php echo $form->error($prestacion_model,'prestacion_nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($prestacion_model,'prestacion_descripcion'); ?>
<?php echo $form->textField($prestacion_model,'prestacion_descripcion',array('size'=>25,'maxlength'=>1000)); ?>
<?php echo $form->error($prestacion_model,'prestacion_descripcion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($prestacion_model,'prestacion_precio_defecto'); ?>
<?php echo $form->textField($prestacion_model,'prestacion_precio_defecto'); ?>
<?php echo $form->error($prestacion_model,'prestacion_precio_defecto'); ?>
</div>
<input type="button" href="javascript:;" onclick="realizaProceso( $('#Prestacion_prestacion_codigo').val(), $('#Prestacion_prestacion_nombre').val(), $('#Prestacion_prestacion_descripcion').val(), $('#Prestacion_prestacion_precio_defecto').val() );return false;" value=" GUARDAR "/>
<input type="button" href="javascript:;" onclick="ocultareldiv()" value=" CERRAR "/>
<br/>
<span id="resultado"></span>
<?php $this->endWidget(); ?>
</fieldset>
</div><!-- form -->
y en el controlador
public function actionIngresarPrestacion(){
$prestacion_model = new Prestacion;
$prestacion_model->prestacion_codigo = $_POST['prestacion_codigo'];
$prestacion_model->prestacion_nombre = $_POST['prestacion_nombre'];
$prestacion_model->prestacion_descripcion = $_POST['prestacion_descripcion'];
$prestacion_model->prestacion_precio_defecto = $_POST['prestacion_precio_defecto'];
$prestacion_model->prestacion_cc_cust_id = Yii::app()->user->getIdCustomer();
$prestacion_model->save();
}
MI GRAN PROBLEMA ES QUE NO SE ACTUALIZA MI DROPBOXLIST COMO LES MENCIONE ANTERIORMENTE, SE QUE TENGO QUE HACER ESTO VIA AJAX TAMBIEN
PERO NO TENGO MUY CLARO COMO HACERLO OJALA ALGUIEN ME PUEDA ECHAR UNA MANO
SALUDOS Y GRACIAS POR SU TIEMPO