2013-09-12 5 views
0

Я работаю с yii GridView и создаю пользовательскую кнопку - который обрабатывает запрос ajax.Yii Gridview пользовательская кнопка ajax success не работает должным образом

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $dataProvider, 
    'id' => 'user-grid', 
    'ajaxUpdate' => true, 
    'columns'  => array(
     array(
      'name'  => 'date_create', 
      'type'  => 'raw', 
      'value'  => function($data){ 
           return Yii::app()->dateFormatter->format("y/MM/dd",strtotime($data->date_create)).'</br>'. 
             Yii::app()->dateFormatter->format("HH:mm:ss",strtotime($data->date_create)); 
          }, 
      'htmlOptions' => array('style' => 'white-space: nowrap'), 
     ), 
     array(
      //'name'  => 'car.model.brand.title', 
      'header'  => 'Марка авто', 
      //'value'  => 'CHtml::encode($data->car->model->brand->title) . " " . CHtml::encode($data->car->model->title)', 
      'htmlOptions' => array('style' => 'white-space: nowrap'), 
      'class'  => 'CLinkColumn', 
      'urlExpression' => '"/site/car/".$data->id_car', 
      'labelExpression' => 'CHtml::encode($data->car->model->brand->title) . " " . CHtml::encode($data->car->model->title)', 
     ), 
     array(
      'name' => 'text', 
      'value' => 'CHtml::encode($data->text)', 
     ), 
     array(
      'class' => 'CButtonColumn', 
      'template' => '{solved}{deleted}', 
      'buttons' => array(
       'solved' => array(
        'label' => 'Жалоба решена', 
        'url' => 'yii::app()->controller->createurl("admin/adminForms/complaintChangeStatus", array("id" => $data->id,"status" => FormCarComplainStatus::STATUS_SOLVED))', 
        'options' => array (
          'confirm' => 'Жалоба решена?', 
          'class' => 'btn', 
          'ajax'=>array(
           'type'=>'POST', 
           'url'=>"js:$(this).attr('href')", 
           'success' => "js:$.fn.yiiGridView.update('user-grid')" 
        )), 
       ), 
       'deleted' => array(
        'label' => 'Удалить жалобу', 
        'url' => 'yii::app()->controller->createurl("admin/adminForms/complaintChangeStatus", array("id" => $data->id,"status" => FormCarComplainStatus::STATUS_DELETED))', 
        'options' => array (
         'class' => 'btn', 
         'confirm' => 'Удалить жалобу?', 
         'ajax'=>array(
           'type'=>'POST', 
           'url'=>"js:$(this).attr('href')", 
           'success' => "js:$.fn.yiiGridView.update('user-grid')" 
         )), 
       ) 
      ), 
      'htmlOptions' => array('width'=>'150px') 
     ), 
    ), 
)); 

И я хочу, чтобы обновить GridView После Ajax вызова закончилась Как вы видите, я использую - 'success' => "js:$.fn.yiiGridView.update('user-grid')"

Проблема:. код «JS: $ fn.yiiGridView.update ('user- grid ') "работать не после завершения ajaxCall - он не дожидается до тех пор, пока ответ не появится на сервере форм. Он работает сразу после нажатия кнопки

Что я делаю неправильно?

заранее благодарим

ответ

1

Попробуйте

'success' => "js:function() { $.fn.yiiGridView.update('user-grid') }" 
+0

Большое спасибо - он хорошо работает. Это то, что мне нужно – programmer

+0

@programmer. Вы должны принять правильный ответ. – Joe

Смежные вопросы