我在控制器中合并了创建和管理视图和方法,
所以在admin.php
我有以下几行:
echo $this->renderPartial('_form', array('model'=>$create));
echo $this->renderPartial('_admin', array('model'=>$search));
并在_form中编辑提交按钮
echo CHtml::ajaxSubmitButton('Submit', Yii::app()->createUrl('money/income'), array('update' => '#money-grid'));
并在money
控制器中,income
方法实现create方法并将CGridView
作为ajax响应发送。
if ($createModel->save()) {
$this->renderPartial('_admin', array('model' => $searchModel), false, true);
如果数据保存到数据库中,它会呈现包含_admin
的{{1}}视图,这样可以完成,但是如果客户端创建了一些内容并插入到数据库中,则存在问题,所以在点击{{1它将触发多个CGridView,它会产生问题,
例如,如果用户插入 n 行,然后点击要删除的每一行,它将触发 n + 1 次。(但它应该是1)
问题出在哪里?是Yii吗?
答案 0 :(得分:0)
通过jQuery更新CGridView而不是渲染它来解决问题,所以我将ajaxSubmitButton更改为
echo CHtml::ajaxSubmitButton('Submit', Yii::app()->createUrl('money/income'), array('success'=>'$.fn.yiiGridView.update("money-grid")'));
它解决了问题。
'success'=>'$.fn.yiiGridView.update("money-grid")'