Question

I have a CListView which I want to filter using Ajax. I have 2 textfields. Now they both filter the same column: titel. I'm searching quite some time now, but I can't seem to figger out why they both filter the titel and not the locatie too..

It's my first time to use Ajax so, i'm afraid I don't know exactly how to pass the right parameters at the moment and am kind of lost. Someone who can help me?

So here's my view:

<?php echo CHtml::beginForm(CHtml::normalizeUrl(array('kunstwerk/index')), 'get', array('id'=>'filter-form'))?>

<?php echo CHtml::textField('string', (isset($_GET['string'])) ? $_GET['string'] : '', array('id'=>'locatie'));?>

<?php echo CHtml::textField('string', (isset($_GET['string'])) ? $_GET['string'] : '', array('id'=>'titel'));?>

and..

Yii::app()->clientScript->registerScript('search',
        "var ajaxUpdateTimeout;
        var ajaxRequest;

        $('input#titel').keyup(function(){
            titel = $(this).serialize();
            clearTimeout(ajaxUpdateTimeout);
            ajaxUpdateTimeout = setTimeout(function () {
                $.fn.yiiListView.update(
        // this is the id of the CListView
                    'ajaxListView',
                    {data: titel}
                )
            },
        // this is the delay
            300);
        });

        $('input#locatie').keyup(function(){
            locatie = $(this).serialize();
            clearTimeout(ajaxUpdateTimeout);
            ajaxUpdateTimeout = setTimeout(function () {
                $.fn.yiiListView.update(
        // this is the id of the CListView
                    'ajaxListView',
                    {data: locatie}
                )
            },
        // this is the delay
            300);
        });"
    );

and..

<?php $this->widget('zii.widgets.CListView', array(
        'dataProvider'=>$dataProvider,
        'itemView'=>'_view',
        'sortableAttributes'=>array(
            'titel'
        ),
        'id'=>'ajaxListView',
    )); 
?>

Here's my controller:

public function actionIndex($string = '')
    {
        $criteria = new CDbCriteria();
        if( strlen( $string ) > 0 )
            $criteria->addSearchCondition( 'titel', $string, true, 'OR' );
            $criteria->addSearchCondition( 'locatie', $string, true, 'OR' );

        $dataProvider = new CActiveDataProvider( 'Kunstwerk', array( 'criteria' => $criteria, ) );

        //$dataProvider=new CActiveDataProvider('Kunstwerk');
        $this->render('index',array(
            'dataProvider'=>$dataProvider,
            'bedrijven' => Bedrijf::model()->findAll(),
        ));
    }

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top