duanqiang2617 2014-04-09 10:50
浏览 51

-Yii-通过AJAX更新listView

I'm very new at Yii and PHP, and I have a question.

I need a listView to be updated by ajax filtering from a dropdown selection, and it is working fine but the problem is the pagination. I filter the results in the controller and pass the dataProvider to the view to change the listView, but when y change the page from paginator it shows again all results instead of the filtered results.

Here is the code I have:

The view (prueba.php):

<?php
echo CHtml::beginForm();

echo CHtml::dropdownList('comunidades',$comunidad,$comunidades,
            array('empty'=>'- -')
    );
echo CHtml::submitButton("Enviar");
echo CHtml::endForm();

$this->widget('zii.widgets.CListView',
    array(
        'itemView'=>'lista',
        'dataProvider'=>$provider_ciudades,
        'id'=>'id_lista_ciudades',
    )
);

Yii::app()->clientScript->registerScript('items_update', "$('#category_id').change(function(){
    $.fn.yiiListView.update('id_lista_ciudades', {
            data: $(this).serialize(),
        }
    );
});
return false;",
CClientScript::POS_READY);?>

The controller(the action that renders the view):

public function actionprueba(){
    if($_POST['comunidades'] != null)
        $comunidad = $_POST['comunidades'];
    else
        $comunidad = '';

    $criteria_comunidades = new CDbCriteria();
    $criteria_comunidades->select="comunidad";
    $res_comunidades = Ciudad::model()->findAll($criteria_comunidades);
    if($res_comunidades != null)
        $comunidades = CHtml::listData($res_comunidades,'comunidad','comunidad');
    else
        $comunidades = null;

    $criteria_ciudades = new CDbCriteria();//Creiteria para la busqueda de las ciudades.

    if(strlen($comunidad) > 0)
        $criteria_ciudades->addCondition("comunidad='$comunidad'");//Condicion de comunidad.

    $provider_ciudades = new CActiveDataProvider('Ciudad',
        array(
            'pagination'=>array(
                'pageSize'=>3,
            ),
            'criteria'=>$criteria_ciudades 
        )
    );

    $this->render('prueba',
        array(
            'comunidades' => $comunidades,
            'provider_ciudades' => $provider_ciudades,
            'comunidad' => $_POST['comunidades'],
        )
    );
}

Thanks for any help :)

  • 写回答

1条回答 默认 最新

  • doufu5747 2014-04-17 09:25
    关注

    Ok, I solved it, I needed new action to POST the data from prueba.php and changed the submitButton by ajaxSubmitButton and replaced the listView by ajax.

    评论

报告相同问题?

悬赏问题

  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗