2013-02-21 64 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