Tbgridview Filtrar Tablas Relacionadas

Hola compañeros, tengo una duda que seguro que es super fácil, pero que me está siendo un quebradero de cabeza.

Lo que quiero, es que salga en el "listData" la lista de provincias, y al seleccionar la provincia, solo se muestren dichas provincias.

Tengo la siguiente relacción de tablas:

Model - Provincia




public function relations()

	{

		return array(

			'alumnos' => array(self::HAS_MANY, 'Alumno', 'provinciaID'),

		);

	}

	public function search()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('ID',$this->ID);

		$criteria->compare('name',$this->name,true);


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}



Model - Alumno




public function relations()

	{

		return array(

			'laboral' => array(self::BELONGS_TO, 'Laboral', 'laboralID'),

			'provincia' => array(self::BELONGS_TO, 'Provincia', 'provinciaID'),

			'alumnoCursos' => array(self::BELONGS_TO, 'AlumnoCurso', 'alumnoID'),

		);

	}

public function search()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('ID',$this->ID);

		$criteria->compare('name',$this->name,true);

		$criteria->compare('surname',$this->surname,true);

		$criteria->compare('age',$this->age);

		$criteria->compare('email',$this->email,true);

		$criteria->compare('phone',$this->phone,true);

		$criteria->compare('laboralID',$this->laboralID);

		$criteria->compare('provinciaID',$this->provinciaID, true);


		return new CActiveDataProvider($this, array(

			'pagination'=>array(

            	'pageSize' => Yii::app()->params->pagesize,

            ),

			'criteria'=>$criteria,

		));

	}



Model - AlumnoCurso




	public function relations()

	{

		return array(

			'alumno' => array(self::BELONGS_TO, 'Alumno', 'alumnoID'),

			'curso' => array(self::BELONGS_TO, 'Curso', 'cursoID'),

			'date' => array(self::BELONGS_TO, 'Alumno', 'alumnoID'),


		);

	}


	public function search()

	{


		$criteria=new CDbCriteria;


		$criteria->compare('ID',$this->ID);

		$criteria->compare('alumnoID',$this->alumnoID);

		$criteria->compare('cursoID',$this->cursoID);

		$criteria->compare('status',$this->status);

		$criteria->compare('date',$this->date);

		$criteria->compare('avisado',$this->avisado);


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

			'sort' => array(

	            'defaultOrder' => 'status ASC, ID DESC',

	        ),

			'pagination'=>array(

		        'pageSize'=>50,

		    ),

		));

	}



Vies el Admin de inscripcion




<?php $this->widget('bootstrap.widgets.TbGridView', array(

	'id'=>'inscripciones',

    'type'=>'striped bordered condensed',

    'dataProvider'=>$model->search(),

    'filter'=>$model,

    'template'=>"{items} {pager} {summary}",

    'rowCssClassExpression'=>'$data->status ? "" : "red"',


    'columns'=>array(

    ...

       array(

            'header'=>'Provincia', 

            'name'=>'provinciaID',

            'filter'=>CHtml::listData(Alumno::model()->findAll(), 'ID', '$model->alumno->provinciaID'),

            'value'=>'$data->alumno->provinciaID==0?"No seleccionado":$data->alumno->provincia->name',

            'headerHtmlOptions'=>array(

                'style'=>'width:9%;text-align:left !important;',

            ),

        ),

    ...



Controlador de inscripcion




	public function actionAdmin()

	{

		$model=new AlumnoCurso('search');

		$model->unsetAttributes();  // clear any default values

		if(isset($_GET['AlumnoCurso']))

			$model->attributes=$_GET['AlumnoCurso'];




		$this->render('admin',array(

			'model'=>$model,

		));

	}



Para no hacerlo lioso, he intentado reducir el codigo introducion a lo exencial, pero si me dejo algo necesario, decirmelo