Yii CListview - >分页和AjaxLink/ajaxButton

but*_*ing 5 yii

我有关于分页和Ajax表单的问题.

这是我的代码Controller:

$dataProvider = new CActiveDataProvider('User', array(
        'pagination'=>array(
                'pageSize'=>10,
        ),
));

$this->render('users',array(
  'dataProvider'=>$dataProvider,
));  
Run Code Online (Sandbox Code Playgroud)

对于view - > users:

$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_user',
Run Code Online (Sandbox Code Playgroud)

);

对于渲染_users:

echo CHtml::ajaxLink($text, $this->createUrl('admin/deleteuser',array('id'=>$data->iduser)), array('success'=>"js:function(html){ alert('remove') }"), array('confirm'=>_t('Are you sure you want to delete this user?'), 'class'=>'delete-icon','id'=>'x'.$viewid));
Run Code Online (Sandbox Code Playgroud)

如果我在数据库中有15行,它将只显示10并且将为下一个5生成一个分页(ajaxUpdate = true).前10行对ajaxLink没有问题,因为生成了clientscript但问题是当我移动到在下一页,ajaxLink无法正常工作,因为它不是由分页生成的.

任何的想法?谢谢

boo*_*dev 1

另一种方法,请查看yii 论坛中的这篇文章。所以你的代码将变成这样:

echo CHtml::link($text,
    $this->createUrl('admin/deleteuser',array('id'=>$data->iduser)),
    array(// for htmlOptions
      'onclick'=>' {'.CHtml::ajax( array(
           'beforeSend'=>'js:function(){if(confirm("Are you sure you want to delete?"))return true;else return false;}',
           'success'=>"js:function(html){ alert('removed'); }")).
         'return false;}',// returning false prevents the default navigation to another url on a new page 
    'class'=>'delete-icon',
    'id'=>'x'.$viewid)
);
Run Code Online (Sandbox Code Playgroud)

您的确认已移至 jqueryajax函数的beforeSend回调中。如果我们false从 中返回beforeSend,则不会发生 ajax 调用。

另一个建议,您应该使用post变量而不是get,并且如果可以的话,将 ajax 调用移至function索引视图中的 a ,并且仅包含对所有链接事件中的函数的调用onclick

希望这可以帮助。