Если указан параметр filter - в таблице выводятся поля ввода. По их значениям и будет фильтроваться выборка.
Во view инициализируем виджет CGridView, в параметрах надо указать модель для фильтрации.
View:
// $model - переданная модель из контроллера
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'profiles',
'dataProvider'=>$model->search(),
'filter'=>$model,
));
CGridView посылает ajax запрос на текущую страницу, с массивом в $_GET['Название_модели']. Этот массив - атрибуты модели. Их можно присвоить модели для выборки. По сути так и происходит фильтрация.
Итак, в текущем действии контроллера (текущем, значит в котором выводится таблица):
Controller:
public function actionUsers()
{
// Создаем модель
$model = User::model();
/* Не забудьте в rules модели указать нужные поля как 'safe', 'on'=>'search'
иначе по ним поиск будет невозможен.
*/
$model->setScenario('search');
//
if(isset($_GET['User'])) {
// Присваиваем модели полученные атрибуты
$model->attributes = $_GET['User'];
}
// В рендер передаем переменную $model
$this->render('users', array('model'=>$model));
}
Такой простейший пример весьма сложно найти, как правило, везде подразумевается, что он известен по умолчанию.