2013-02-21 62 views
0

我想在我的CGridView中實現一個ajax搜索,我沒有太多的運氣讓它工作。Ajax搜索和CGridView

我的網格:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'talent-grid', 
    'dataProvider'=>$model->searchTalent(), 
    'hideHeader'=>true, 
    'template' => '{pager}{items}{pager}', 
    'pager'=>array('cssFile'=>'/css/pager.css','header' => '',), 
    'cssFile'=>'/css/client-grid.css', 
    'columns'=>array(
     array(
      'name'=>'talent_id', 
      'type'=>'raw', 
      'value'=>'$data->getTalentGridRow($data)', 
     ), 
    ), 
)); ?> 

搜索表單:

<?php $form=$this->beginWidget('CActiveForm', array(
    'action'=>Yii::app()->createUrl($this->route), 
    'method'=>'get', 
)); ?> 

    <div class="row"> 
     <?php echo $form->label($model,'full_name',array('class'=>'inline')); ?> 
     <?php echo $form->textField($model,'full_name',array('size'=>60,'maxlength'=>64)); ?> 
    </div> 
    <div class="row"> 
     <?php echo $form->label($model,'gender_id',array('class'=>'inline')); ?> 
     <?php echo $form->checkBoxList($model, 'gender_id',CHtml::listData(Gender::model()->findAll(), 'gender_id', 'name'),array('separator'=>'&nbsp;&nbsp;&nbsp;')); ?> 
     <?php echo $form->error($model,'gender_id'); ?> 
    </div> 

    <div class="row buttons"> 
     <?php echo CHtml::submitButton('Submit'); ?> 
    </div> 

<?php $this->endWidget(); ?> 

搜索模式:

public function searchTalent() { 
    $criteria=new CDbCriteria; 
    $criteria->compare('full_name',$this->full_name,true); 

    if ($this->gender_id != "") { 
     $criteria->compare('gender_id',$this->gender_id); 
    } 

    return new CActiveDataProvider($this, array(
     'criteria'=>$criteria, 
     'pagination'=>array(
      'pageSize'=>30, 
     ), 
    )); 
} 

的JavaScript:

Yii::app()->clientScript->registerScript('searchTalent', " 
$('#search-form form').submit(function(){ 
    $.fn.yiiGridView.update('talent-list', { 
     data: $(this).serialize() 
    }); 
    return false; 
}); 
"); 

控制器:

public function actionClients() { 
    $model = new Talent('search'); 
    $model->unsetAttributes(); // clear any default values 

    if (isset($_GET['Talent'])) { 
     $model->attributes = $_GET['Talent']; 
    } 

    $this->render('clients', array(
     'model' => $model, 
     'pages' => 10 
    )); 
} 

的JS提交火災,但網格沒有更新。不知道爲什麼。

+0

請交控制器動作太 – dInGd0nG 2013-02-21 06:46:52

+0

添加動作控制器 – keeg 2013-02-21 17:52:57

回答

1

您已經在js中指定了gridview的ID爲talent-list,但原始ID爲talent-grid,如小部件初始化調用中指定的。因此,改變線

Yii::app()->clientScript->registerScript('searchTalent', " 
$('#search-form form').submit(function(){ 
    $.fn.yiiGridView.update('talent-grid', { 
     data: $(this).serialize() 
    }); 
    return false; 
}); 
"); 
+0

哦,上帝,請不要告訴我這就是問題所在... – keeg 2013-02-21 19:35:16

+0

這是問題,這是我檢查3次太..太棒了,晚上得停止發展... – keeg 2013-02-21 21:06:37