Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Yii CListview -> pagination and AjaxLink/ajaxButton

Tags:

yii

I have problems regarding with pagination and Ajax form.

Here is my code for Controller:

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

$this->render('users',array(
  'dataProvider'=>$dataProvider,
));  

For view -> users:

$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_user',

);

For render _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));

if i have 15 rows in a database it will only show 10 and will generate a pagination (ajaxUpdate = true) for next 5. The first 10 rows has no problem with the ajaxLink because the clientscript was generated but problem is the when I move to the next page, the ajaxLink is not working because its not generated by the pagination .

any idea? thanks

like image 388
butching Avatar asked Nov 13 '22 09:11

butching


1 Answers

An alternate method, check this post in the yii forum. So your code will become like this:

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)
);

Your confirm is moved to jquery's ajax function's beforeSend callback. If we return false from beforeSend, the ajax call doesn't occur.

Another suggestion, you should use post variables instead of get, and also if you can, move the ajax call to a function in the index view, and just include calls to the function from the all links' onclick event.

Hope this helps.

like image 92
bool.dev Avatar answered Dec 10 '22 21:12

bool.dev