How to show ajax delete status in CGridView like flash messages

Comparing #2 with #5

Content

[...]
when you click the delete button at first it performs the delete operation in the controller then it refreshes the grid using another request. 'afterAjaxUpdate' fires just after refreshing so you can't see any message just after the first delete operation.

Now I'll show you how you can achieve this functionality.

The main tricks l
ieays under CButtonColumn properties. There is a property called afterDelete which will fire a function just after the deleting operation. We will use ajax polling request to display the deletion status. So, In the controller file just echo the message with your flash message css display style and for non ajax request set the Flash message using setFlash().
[...]
try{
$this->loadModel($id)->delete();
    if(!isset($_GET['ajax']))
 
    
Yii::app()->user->setFlash('deleteStatus','success','Normal - Deleted Successfully');     else
 
    
echo "<div class='flash-success'>Ajax - Deleted Successfully</div>"; //for ajax }catch(CDbException $e){     if(!isset($_GET['ajax']))
 
    
Yii::app()->user->setFlash('deleteStatus','error','Normal - error message');     else
 
    
echo "<div class='flash-error'>Ajax - error message</div>"; //for ajax
}
[...]
```

And in your
 admin (or other where you have the {delete} in GridView) view, show the echoed message in the statusMsg place holder using data variable. ```php <spandiv id='"statusMsg'></span">
 
<?php if(Yii::app()->user->hasFlash('success')):?>
 
    <div class="flash-success">
 
        <?php echo Yii::app()->user->getFlash('success'); ?>
 
    </div>
 
<?php endif; ?>
 
 
<?php if(Yii::app()->user->hasFlash('error')):?>
 
    <div class="flash-error">
 
        <?php echo Yii::app()->user->getFlash('error'); ?>
 
    </div>
 
<?php endif; ?>
 
</div
>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'region-grid',
[...]
```

This way everything works even if you disable ajax requests in GridView using:
 
 
 
 
```php 
$this->widget('zii.widgets.grid.CGridView', array(
 
'id'=>'region-grid',
 
'dataProvider'=>$model->search(),
 
'filter'=>$model,
 
'ajaxUpdate'=>false,
 
'columns'=>array(
 
...
 
```
 
 
 
Hope this will be helpful.