2014-11-11 3 views
0

Я пытаюсь получить фильтрации для запуска, хотя я имею некоторые проблемы ниже моя точка зрения отмечает, что это в ПАРЦИАЛЬНОМ зрении: -Не удается сделать фильтрацию с помощью выпадающего меню в Yii TbGridView (v1.xx)

Если я нажимаю на заголовок столбца, он сортирует, как ожидалось, однако, если я выберу вариант из раскрывающегося списка, он не будет фильтровать элементы ... Любые идеи?

<?php 
$myuser = new Myuser('search');  
$filterBtn = $this->widget('bootstrap.widgets.TbButton', array(
    'icon'   => 'filter', 
    'size'   => 'small', 
    'label'   => $myuser->paging ? 'View All' : 'View Less', 
    'htmlOptions' => array('class'=>'pull-right', 'style'=> 'margin:20px 0;'), 
    'url'   => $myuser->paging ? array('/carrot/myuser/admin/paging/0') : array('/carrot/myuser/admin') 
), true); 

$this->widget('bootstrap.widgets.TbGridView',array(
'id'    => 'myuser-grid','type'=>'striped bordered condensed', 
'dataProvider'  => $myuser->search(), 
'filter'   => $myuser, 
'columns'   => array(
    array(
     'id' => 'user_id', 
     'class' => 'CCheckBoxColumn', 
     'checked' => 'in_array($data->user_id, $this->grid->owner->model->student_ids)', 
     'checkBoxHtmlOptions' => array(
      'name' => 'selected_student_id[]', 
     ) 
    ), 
    'firstname', 
    'surname', 
    'username', 
    array(
     'name'    => 'year_id', 
     'filter'   => CHtml::activeDropDownList($myuser, 'year_id', CHtml::listData(Organisation::model()->distinctYears, 'year_id', 'year_id'), array('prompt'=>'All Years')), 
     'htmlOptions'  => array('style' => 'text-align:center;'), 
     'headerHtmlOptions' => array('style' => 'text-align:left;'), 
    ), 
    array(
     'name'    => 'form_name', 
     'header'   => 'Form', 
     'filter'   => CHtml::activeDropDownList($myuser, 'form_name', CHtml::listData(Organisation::model()->distinctForms, 'form_name', 'form_name'), array('prompt'=>'All Forms')), 
    ), 
    array(
     'name'    => 'House', 
     'filter'   => CHtml::activeDropDownList($myuser, 'House', CHtml::listData(Organisation::model()->distinctHouses, 'House', 'House'), array('prompt'=>'All Houses')), 
    ), 
), 
)); ?> 

Моя модель имеет следующий способ поиска():

public function search($limit = false) 
{ 
    $criteria = new CDbCriteria(); 

    $criteria->compare('t.user_id',$this->user_id,true); 
    $criteria->compare('t.firstname',$this->firstname,true); 
    $criteria->compare('t.surname',$this->surname,true); 
    $criteria->compare('t.username',$this->username,true); 
    $criteria->compare('t.year_id',$this->year_id); 
    $criteria->compare('t.form_name',$this->form_name); 
    $criteria->compare('t.House',$this->House); 
    $criteria->compare('o.organisation_id',$this->organisation_id); 

    $criteria->group = 't.user_id'; 
    $criteria->together = true; 

    return new CActiveDataProvider($this->currentUserOrganisation(), array(
     'criteria'  => $criteria, 
     'pagination' => array(
      'pageSize' => $this->paging ? ($limit) ? $limit : OverviewController::PAGE_SIZE : 2000 
     ), 
     'sort'   => array(
      'defaultOrder' => array('firstname'=>false, 'surname'=>false), 
      'attributes' => array(
       'organisation_name' => array(
        'asc'  => 'organisation_name', 
        'desc'  => 'organisation_name DESC', 
        'default' => 'desc', 
       ), 
       '*' 
      ) 
     ), 
    )); 
} 
+0

Вы попробовали мой ответ. Отзыв будет приятным ... – Dinistro

ответ

0

Я думаю, что вы не можете использовать DropDownList как фильтр, но вы можете легко использовать CHTML::listData():

array(
    'name' => 'year_id', 
    'filter' => CHtml::listData(Organisation::model()->distinctYears, 'year_id', 'year_id'), 
    'htmlOptions' => array('style' => 'text-align:center;'), 
    'headerHtmlOptions' => array('style' => 'text-align:left;'), 
), 
array(
    'name' => 'form_name', 
    'header' => 'Form', 
    'filter' => CHtml::listData(Organisation::model()->distinctForms, 'form_name', 'form_name'), 
), 
array(
    'name' => 'House', 
    'filter' => CHtml::listData(Organisation::model()->distinctHouses, 'House', 'House'), 
), 

Это автоматически сгенерирует DropDownList для вас.

Я надеюсь, что это сработает для вас.

Смежные вопросы