CGridView widget is already having view,update,dete option.But i am using CListView widget in my jquery mobile based project, but having problem in creating ajax link for delete option. Not getting idea how to create a ajax delete link in _view.php(view file) and its renderPartial() view file to disappear the bar after successfully deleted plz help thanks in advance. Here is the _view.php file link for edit and delete.
<?php
echo CHtml::link(CHtml::encode($data->id),
array('editmember1', 'id' => $data->id),
array('data-role' => 'button', 'data-icon' => 'star')
);
echo CHtml::link(CHtml::encode($data->id), $this->createUrl('customer/delete', array('id' => $data->id)),
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' . $data->id)
);
?>
This is happening because:
The correct action is not being called, because you have not set the
urlproperty ofjQuery.ajax(). You should know that Yii’sCHtml::ajaxis built on top of jQuery’s ajax. So you can add :Also in the url i’m passing an ajax parameter so that the action knows that it’s an ajax request explicitly.
Then the controller action by default(i.e Gii generated CRUD) expects the request to be of post type, you can see this in the customer/delete action line:
if(Yii::app()->request->isPostRequest){...}. So you have to send a POST request, again modify the ajax options:Alternatively you can also use
CHtml::ajaxLink().To update the CListView after deletion, call
$.fn.yiiListView.update("id_of_the_listview");. Something like: