Halloo kawan2,
Saya punya masalah tentang cara meng-update CGridView melalui CJuiDialog yang mana pada CJuiDialog melakukan suatu input data.
Selanjutnya data akan tersimpan di CGridView lalu setelah data tersimpan secara otomatis CGridView akan meng-update dan menampilkan data yang baru saja dibuat. Berikut merupakan sepenggal kode saya:
Ini merupakan clientScript yg saya daftarkan utk melakukan update CGridView
Yii::app()->clientScript->registerScript('mrqitem', "
$('.link-form form').submit(function(){
$.fn.yiiGridView.update('mrq-item-grid', {
data: $(this).serialize()
});
return false;
});
Ini merupakan ajaxlink yg akan menampilkan CJuiDialog
<div class="link-form">
<?php echo CHtml::ajaxlink(Yii::t('mrqitem','Add Item'),$this->createUrl('mrqItem/createitem'),array('id_mrq'=>$mrq['id'],
'onclick'=>'$("#MrqitemDialog").dialog("open"); return false;',
'update'=>'#MrqitemDialog'
),array('id'=>'showMrqitemDialog')); ?>
<div id="MrqitemDialog"></div>
</div><!-- link-form -->
Berikutnya merupakan method Createitem yg ada pada controller mrqItemController
public function actionCreateitem() {
$model=new MrqItem;
// Ajax Validation enabled
$this->performAjaxValidation($model);
// Flag to know if we will render the form or try to add
// new jon.
$flag=true;
if(isset($_POST['MrqItem']))
{ $flag=false;
$model->attributes=$_POST['MrqItem'];
$model->save();
}
if($flag) {
$this->renderPartial('createMrqitem',array('model'=>$model,),false,true);
}
}
Yang terakhir form untuk tampilan CJuiDialog
<div class="form" id="MrqitemDialogForm">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'mrq-item-form',
'enableAjaxValidation'=>false,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<?php echo $form->hiddenField($model,'id_mrq');?>
<div class="row">
<?php echo $form->labelEx($model,'id_item'); ?>
<?php echo $form->dropDownList($model,'id_item',CHtml::listData(Item::model()->findAll(),'id','nama'),array('prompt'=>'Select')); ?>
<?php echo $form->error($model,'id_item'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'qty'); ?>
<?php echo $form->textField($model,'qty',array('size'=>10,'maxlength'=>10)); ?>
<?php echo $form->error($model,'qty'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'id_satuan'); ?>
<?php echo $form->dropDownList($model,'id_satuan',CHtml::listData(Satuan::model()->findAll(),'id','nama'),array('prompt'=>'Select')); ?>
<?php echo $form->error($model,'id_satuan'); ?>
</div>
<div class="row-buttons">
<?php echo CHtml::ajaxSubmitButton(Yii::t('mrqitem', 'Create item'),
CHtml::normalizeUrl(array('mrqItem/createitem','id_mrq'=>$mrq['id'],'render'=>false)),
array('success'=>'js:function(data) {
$("#mrq-item-grid").val(data);
$("#MrqitemDialog").dialog("close");
}'),array('id'=>'closeMrqitemDialog')); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
Masalah yang masih saya hadapi ialah data masih belum tersimpan pada database
dan saya ingin tahu bagaimana cara melakukan update/refresh pada CGridView.
Mohon dari kawan2 sekalian pencerahan dan bantuannya. Terima kasih