Yii中有一个视图,“患者”视图中有多个CGridViews和其他元素在初始视图之后加载了ajax被加载。一些是ajax加载在已经ajax加载的div中,意味着它们嵌套2层深。Yii“每页结果”在同一页面中加载其他ajax内容后,ajax下拉菜单中断了
在这些ajax加载的CGridViews我有下拉,让用户设置每个网格中每页的结果数量。这工作正常,直到用户使用ajax加载页面上的另一个元素。在另一个网格(或其他任何东西)被ajax加载之后,它会打破每页ajax函数的所有其他结果,除了刚才加载的那个。
类型错误:
加载任何其他与阿贾克斯后,其他CGridViews将使用每个页面下拉我的结果时,JavaScript错误抛出这样的设置是不确定的
内置CGridView寻呼机总是工作对所有网格都很好,所以我知道必须有一些方法让每个页面选择器的结果找到正确的$ .fn.yiiGridView来更新。
加载的cgridview内嵌控制器动作:
// $columns[]='normal_allele_depth';
// $columns[]='normal_allele_freq';
echo "<div class='results-selector'>";
echo "Results per page: ".
CHtml::dropDownList('gecgPageSize',$gecgPageSize,array(10=>10,20=>20,50=>50,100=>100),array(
'onchange'=>"
$.fn.yiiGridView.update('gecg',{ data:{gecgPageSize: $(this).val() }});
",
));
echo "</div>";
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'gecg',
'filter'=>$model,
'dataProvider'=>$dataProvider,
'columns'=>$columns,
));
?>
思考:
public function actionInlineSearch()
{
YiiSessions::model()->setFromRequestCookie();
$model=new GeneExpressionCufflinksGene('search');
$model->unsetAttributes(); // clear any default values
// page size drop down changed
if (isset($_GET['gecgPageSize'])) {
Yii::app()->user->setState('gecgPageSize',(int)$_GET['gecgPageSize']);
unset($_GET['gecgPageSize']); // would interfere with pager and repetitive page size change
}
$gecgPageSize=Yii::app()->user->getState('gecgPageSize');
if(isset($_REQUEST['GeneExpressionCufflinksGene']))
$model->attributes=$_REQUEST['GeneExpressionCufflinksGene'];
$this->renderPartial('inlineSearch',array('model'=>$model,'gecgPageSize'=>$gecgPageSize), false, true);
}
加载的CGridView插件的inlineSearch看法?
作为一个方面说明,我后来不得不修改CGridView框架代码,以避免重复加载该窗口小部件多次发生重复事件。不是最佳的,但它不是通过内联加载的。 – glyph